{
    "version": "https:\/\/jsonfeed.org\/version\/1.1",
    "title": "Блоги: заметки с тегом citforum",
    "_rss_description": "Автоматически собираемая лента заметок, написанных в блогах на Эгее",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": false,
    "_itunes_explicit": "no",
    "home_page_url": "https:\/\/www.blogengine.me\/blogs\/tags\/citforum\/",
    "feed_url": "https:\/\/www.blogengine.me\/blogs\/tags\/citforum\/json\/",
    "icon": false,
    "authors": [
        {
            "name": "Илья Бирман",
            "url": "https:\/\/www.blogengine.me\/blogs\/",
            "avatar": false
        }
    ],
    "items": [
        {
            "id": "119394",
            "url": "https:\/\/bolknote.ru\/all\/search-pic-html\/",
            "title": "Найди картинку. Неизведанные возможности Web-дизайна",
            "content_html": "<p style=\"background: rgb(222, 235, 217); padding: 10px; color:#000\">Заметка была впервые <a href=\"http:\/\/citforum.ru\/internet\/html\/search_pic.shtml\">опубликована<\/a> на сайте «Цитфорум» в 1999-м году, дата публикации примерно восстановлена из «Веб-архива»<\/p>\n<h2>Использование встроенных в NC картинок.<\/h2>\n<p>Однажды вечером, из любопытства просматривая файл <i>NETSCAPE.EXE<\/i>, я наткнулся на странный текст:<\/p>\n<pre class=\"e2-text-code\"><code class=\"html\">&lt;IMG SRC=internal-attachment-icon BORDER=0&gt;<\/code><\/pre><p>Словечко <i>internal<\/i> наталкивало на определенные мысли и я решил их проверить. Набрав эту строку в виндовом блокноте я посмотрел на результат в <i>NC<\/i>. И вот что я увидел:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/bolknote.ru\/pictures\/1999.05.08.2.png\" width=\"27\" height=\"27\" alt=\"\" \/>\n<\/div>\n<p><i>Wow<\/i>! Я решил отыскать другие встроенные картинки, получился довольно приличный список, но уникальных оказалось не очень много, всего 22 штуки. Не ручаюсь, что я нашел все:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/bolknote.ru\/pictures\/1999.05.08.1.png\" width=\"288\" height=\"108\" alt=\"\" \/>\n<\/div>\n<p>А вот список имен:<\/p>\n<pre class=\"e2-text-code\"><code class=\"html\">&lt;IMG SRC=internal-attachment-icon&gt;\r\n&lt;IMG SRC=internal-icon-insecure&gt;\r\n&lt;IMG SRC=internal-icon-show-all-mail-recipients&gt;\r\n&lt;IMG SRC=internal-gopher-binary&gt;\r\n&lt;IMG SRC=internal-gopher-unknown&gt;\r\n&lt;IMG SRC=internal-gopher-movie&gt;\r\n&lt;IMG SRC=internal-gopher-sound&gt;\r\n&lt;IMG SRC=internal-gopher-image&gt;\r\n&lt;IMG SRC=internal-gopher-text&gt;\r\n&lt;IMG SRC=internal-gopher-menu&gt;\r\n&lt;IMG SRC=internal-gopher-index&gt;\r\n&lt;IMG SRC=internal-gopher-telnet&gt;\r\n&lt;IMG SRC=internal-smime-encrypted-bad&gt;\r\n&lt;IMG SRC=internal-smime-signed-bad&gt;\r\n&lt;IMG SRC=internal-smime-encrypted-signed-bad&gt;\r\n&lt;IMG SRC=internal-edit-unsupported-end-tag&gt;\r\n&lt;IMG SRC=internal-edit-unsupported-tag&gt;\r\n&lt;IMG SRC=internal-edit-form-element&gt;\r\n&lt;IMG SRC=internal-edit-named-anchor&gt;\r\n&lt;IMG SRC=about:security?banner-secure&gt;\r\n&lt;IMG SRC=internal-attachment-dl-all-icon&gt;\r\n&lt;IMG SRC=internal-sa-encrypted-bad&gt;\r\n&lt;IMG SRC=internal-sa-signed-bad&gt;\r\n&lt;IMG SRC=internal-news-followup-and-reply&gt;\r\n&lt;IMG SRC=internal-icon-delayed&gt;<\/code><\/pre><p>Использование встроенных рисунков позволяет ненамного, но все же уменьшить размер страницы. Жаль только, что способ непригоден для <i>Internet Explorer<\/i>’a. В идеале хорошо бы при просмотре страницы <i>Netscape<\/i>’ом загружался встроенный рисунок, а при использовании <i>IE<\/i>, нууу… хотя бы картинка из внешнего файла.<\/p>\n<p>И тут я вспомнил о введенном еще в <i>IE 2.0<\/i> атрибуте <tt>DYNSRC<\/tt> тега <tt>IMG<\/tt>.<\/p>\n<p>Этот атрибут предназначен для вывода видеороликов, причем он имеет больший приоритет по сравнению с <tt>SRC<\/tt>. Идея оказалась удачной.<\/p>\n<p>С помощью пресловутой кнопки <i>PrintScreen<\/i> и <i>Adobe Photoshop<\/i> я изготовил <i>GIF<\/i>-файл, содержащий первый в моём списке рисунок: <tt>internal-attached-icon<\/tt>, потом при помощи досовской утилиты <i>VFD<\/i> я сконвертировал его в <i>AVI<\/i>-файл, содержащий один-единственный кадр и сохранил его под именем <i>1.avi<\/i>. Создав следующий <i>HTML<\/i>-файл:<\/p>\n<pre class=\"e2-text-code\"><code class=\"html\"?\">&lt;BODY BGCOLOR=WhiTE&gt;\r\n&lt;IMG SRC=internal-attachment-icon DYNSRC=1.avi WIDTH=27 HEIGHT=27&gt;\r\n&lt;\/BODY&gt;<\/code><\/pre><p>я посмотрел результат попеременно в <i>NC<\/i> и <i>IE<\/i>. Как и следовало ожидать в обоих браузерах я увидел одинаковую картинку:<\/p>\n<div class=\"e2-text-picture\">\n<img src=\"https:\/\/bolknote.ru\/pictures\/1999.05.08.2.png\" width=\"27\" height=\"27\" alt=\"\" \/>\n<\/div>\n<p>Как любил говаривать герой игрушки <i>Duke Nukem 3D<\/i> «<i>piece of cake<\/i>!». Напоследок я решил просмотреть страничку в браузере <i>Opera 3.51<\/i> и тут меня постигло жестокое разочарование: картинка появилась… и иcчезла, я смотрел на абсолютно белую страничку. Проблема решилась добавлением параметра <tt>LOOP=-1<\/tt> в тег <tt>IMG<\/tt>. Если вы не рассчитываете, что вашу страницу будут смотреть пользователи браузера <i>Opera<\/i>, этот параметр лучше убрать, иначе при наведении курсора на картинку он будет мерцать.<\/p>\n<p><i>Web<\/i>-программист казанского центра Интернет Степанищев Евгений.<\/p>\n",
            "date_published": "1999-05-08T02:00:00+05:00",
            "date_modified": "2023-05-16T17:37:07+05:00",
            "tags": [
                "citforum",
                "html",
                "netscape"
            ],
            "author": {
                "name": "Евгений Степанищев",
                "url": "https:\/\/bolknote.ru\/",
                "avatar": "https:\/\/bolknote.ru\/pictures\/userpic\/userpic@2x.jpg?1760600028"
            },
            "_date_published_rfc2822": "Sat, 08 May 1999 02:00:00 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "119394",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": null,
                "og_images": []
            }
        },
        {
            "id": "119180",
            "url": "https:\/\/bolknote.ru\/all\/js-new13-shtml\/",
            "title": "Что нового в JavaScript версии 1.3 от Netscape",
            "content_html": "<p style=\"background: rgb(222, 235, 217); padding: 10px; color:#000\">Заметка была впервые <a href=\"http:\/\/citforum.ru\/internet\/javascript\/js_new13.shtml\">опубликована<\/a> на сайте «Цитфорум» в 1999-м году, дата публикации примерно восстановлена из «Веб-архива»<\/p>\n<p>Язык <i>JavaScript 1.3<\/i> поддерживается <i>Navigator<\/i>’ом версий 4.06 и 4.5.<\/p>\n<h2>Поддержка Unicode<\/h2>\n<p>В строках теперь стало возможным использование любых символов из таблицы <i>Unicode<\/i>, которые кодируются как шесть <i>ASCII<\/i>-символов: <tt>\\u<\/tt> и 4 цифры в шестнадцатеричной кодировке, например, <tt>\\u0041<\/tt> — латинская буква «A» из таблицы <i>Unicode<\/i>. Каждая такая последовательность добавляет только один символ к строке. Функции <tt>escape<\/tt> и <tt>unescape<\/tt> не подвергались изменениям и не используют <i>Unicode<\/i>-последовательности.<\/p>\n<p>Следующий пример выведет на экран символ «копирайт» и строку «<i>Netscape Communicator<\/i>»:<\/p>\n<pre class=\"e2-text-code\"><code class=\"javascript\">alert(&quot;\\u00A9 Netscape Communicator&quot;);<\/code><\/pre><p>Следующая таблица содержит список наиболее часто используемых специальных символов и их коды в Unicode:<\/p>\n<div class=\"e2-text-table\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\">\n<tr>\n<td>Unicode<\/td>\n<td>Наименование<\/td>\n<td style=\"text-align: center\"><\/td>\n<\/tr>\n<tr>\n<td>\\u0009<\/td>\n<td>Tab<\/td>\n<td><TAB><\/td>\n<\/tr>\n<tr>\n<td>\\u000B<\/td>\n<td>Vertical Tab<\/td>\n<td>&lt;VT&gt;<\/td>\n<\/tr>\n<tr>\n<td>\\u000C<\/td>\n<td>Form Feed<\/td>\n<td>&lt;FF&gt;<\/td>\n<\/tr>\n<tr>\n<td>\\u0020<\/td>\n<td>Space<\/td>\n<td>&lt;SP&gt;<\/td>\n<\/tr>\n<tr>\n<td>\\u000A<\/td>\n<td>Line Feed<\/td>\n<td>&lt;LF&gt;<\/td>\n<\/tr>\n<tr>\n<td>\\u000D<\/td>\n<td>Carriage Return<\/td>\n<td>&lt;CR&gt;<\/td>\n<\/tr>\n<tr>\n<td>\\u000b<\/td>\n<td>Back Space<\/td>\n<td>&lt;BS&gt;<\/td>\n<\/tr>\n<tr>\n<td>\\u0009<\/td>\n<td>Horizontal Tab<\/td>\n<td>&lt;HT&gt;<\/td>\n<\/tr>\n<tr>\n<td>\\u0022<\/td>\n<td>Double Quote<\/td>\n<td>&quot;<\/td>\n<\/tr>\n<tr>\n<td>\\u0027<\/td>\n<td>Single Quote<\/td>\n<td>`<\/td>\n<\/tr>\n<tr>\n<td>\\u005C<\/td>\n<td>Backslash<\/td>\n<td>\\<\/td>\n<\/tr>\n<\/table>\n<\/div>\n<p>Вы можете использовать <i>Unicode<\/i> для отображения символов в различных языках или технических символов. Для отображения символов <i>Unicode<\/i> у клиента должны быть установлены шрифты <i>Unicode<\/i>. Некоторые ОС, например <i>Windows 95<\/i>, поддерживают <i>Unicode<\/i> лишь частично.<\/p>\n<h2>Новые свойства объекта Global<\/h2>\n<h3>NaN<\/h3>\n<h4>Синтаксис<\/h4>\n<p><tt>NaN<\/tt><\/p>\n<p>В <i>JavaScript 1.2<\/i> значение <tt>NaN<\/tt> (<i>Not-a-Number<\/i>) было определено только для объекта <tt>Number<\/tt>, в версии 1.3 это значение также определено, и для объекта <tt>global<\/tt>. <tt>NaN<\/tt> никогда не равно ни одному другому числу, включая <tt>NaN<\/tt>. Функции, работающие с числами (например <tt>Number.constructor<\/tt>, <tt>parseFloat<\/tt> и <tt>parseInt<\/tt>) возвращает <tt>NaN<\/tt>, если значение параметра не числовое.<\/p>\n<h3>Infinity<\/h3>\n<h4>Синтаксис<\/h4>\n<p><tt>Infinity<\/tt><\/p>\n<p>Числовое значение величины <tt>Infinity<\/tt> — бесконечность. В <i>JavaScript 1.2<\/i> <tt>Infinity<\/tt> было определено как свойство объекта <tt>Number<\/tt>. У объекта <tt>Number<\/tt> есть два свойства <tt>POSITIVE_INFINITY<\/tt> и <tt>NEGATIVE_INFINITY<\/tt> (для примера, <tt>Number.POSITIVE_INFINITY<\/tt>). В <i>JavaScript 1.3<\/i> <tt>Infinity<\/tt> определено и для объекта <tt>Global<\/tt>. Значение <tt>Infinity<\/tt> (положительная бесконечность) всегда больше, чем любое другое число, включая себя. <tt>Infinity<\/tt> полностью соответствует математической бесконечности. Например любое число, умноженное на <tt>Infinity<\/tt>, есть <tt>Infinity<\/tt>, любое число, деленное на <tt>Infinity<\/tt>, есть 0.<\/p>\n<h3>undifined<\/h3>\n<h4>Синтаксис<\/h4>\n<p><tt>undefined<\/tt><\/p>\n<p>Переменные, которым не было присвоено значение, имеют значение <tt>undefined<\/tt>. Теперь вы можете использовать <tt>undefined<\/tt> для проверки того, было ли присвоено переменной значение. Методы и выражения <i>JavaScript<\/i> также возвращают значение <tt>undefined<\/tt>, если используемые переменные не имеют своего значения. <tt>undefined<\/tt> — это свойство объекта <tt>Global<\/tt>, которое имеет значение <tt>undefined<\/tt>.<\/p>\n<p>Пример:<\/p>\n<pre class=\"e2-text-code\"><code class=\"javascript\">var input;\r\nif(input == undefined){\r\n    document.write(&quot;переменной input значение не присвоено&quot;);\r\n}<\/code><\/pre><h2>Новые функции объекта Global (IsFinite)<\/h2>\n<h3>IsFinite<\/h3>\n<h4>Синтаксис<\/h4>\n<p><tt>IsFinite(число)<\/tt><\/p>\n<p>Вы можете использовать эту функцию, для определения конечности числа. Если аргумент функции <tt>NaN<\/tt> положительная или отрицательная бесконечность, функция возвращает <tt>false<\/tt>, иначе она возвращает <tt>true<\/tt>.<\/p>\n<p>Пример:<br \/>\nПроверка числа на конечность<\/p>\n<pre class=\"e2-text-code\"><code class=\"javascript\">if(isFinite(Input) == true)\r\n{\r\n    \/\/ Ваш код\r\n}<\/code><\/pre><h2>Метод toSource<\/h2>\n<h4>Синтаксис<\/h4>\n<p><tt>toSource()<\/tt><\/p>\n<p>Это новый метод, определенный для всех встроенных объектов. Большинство объектов наследуют этот метод от <tt>Object<\/tt>. Метод <tt>toSource<\/tt> базируется на методе <tt>toString<\/tt> объектов <tt>Object<\/tt> и <tt>Array<\/tt>.<\/p>\n<p><tt>toSource<\/tt> возвращает строку, которой вы создавали объект. Вы можете подставлять это значение в функцию <tt>eval<\/tt>, сохранять его и др. Для объекта <tt>tools<\/tt> метод <tt>eval(tools.toSource())<\/tt> вернет копию объекта <tt>tools<\/tt>. Если <tt>tools<\/tt> содержит рекурсивные свойства, то строка, которую вернет функция <tt>toSource()<\/tt> может выглядеть странно.<\/p>\n<p>Пример:<\/p>\n<pre class=\"e2-text-code\"><code class=\"javascript\">product = {type: &quot;electronic&quot;, value: 500};\r\nmyList = [&quot;school&quot;, 4, &quot;home&quot;, 10];\r\nmyBool = new Boolean; \r\nmyString = new String(&quot;my line&quot;);\r\nmyDate = new Date();\r\ndocument.write(product.toSource());\r\ndocument.write(myList.toSource());\r\ndocument.write(myBool.toSource());\r\ndocument.write(myString.toSource());\r\ndocument.write(myDate.toSource());<\/code><\/pre><h2>Расширение объекта Date<\/h2>\n<p>В предыдущих версиях <i>JavaScript<\/i> формат даты был зависим от платформы и различных установок. В новой реализации объект <tt>Date<\/tt> полностью платформонезависим. Объект <tt>Date<\/tt> теперь поддерживает дату и время в формате <i>UTC<\/i> (<i>Universal Coordinated Time<\/i>). Дата задается как количество миллисекунд, прошедших с 1 января 1970 года. День содержит 86400000 миллисекунд.<\/p>\n<p>Следующий пример возвращает разницу между <tt>timeA<\/tt> и <tt>timeB<\/tt> в миллисекундах:<\/p>\n<pre class=\"e2-text-code\"><code class=\"javascript\">timeA = new Date(); \r\nalert(&quot;подождем какое-то время&quot;);\r\ntimeB = new Date(); \r\ntimeDifference = timeB - timeA;<\/code><\/pre><p>Для работы с миллисекундами были добавлены методы <tt>getMilliseconds()<\/tt> и <tt>setMilliseconds(num_ms)<\/tt>, <tt>getUTCMilliseconds()<\/tt> и <tt>setUTCMilliseconds(num_ms)<\/tt>. Для устранения проблеммы 2000 года добавлены функции <tt>setFullYear<\/tt>, <tt>getFullYear<\/tt>, <tt>setUTCFullYear<\/tt> и <tt>getUTCFullYear<\/tt>. <tt>getFullYear<\/tt> возвращает полный год, например 1998, а <tt>setFullYear<\/tt> — устанавливает. Методы <tt>setYear<\/tt> и <tt>getYear<\/tt> оставлены для обратной совместимости.<\/p>\n<h2>Новый конструктор объекта Date<\/h2>\n<p>Конструктор объекта <tt>Date<\/tt> был расширен для поддержки миллисекунд, его полный формат:<\/p>\n<p><tt>Date (yr_num, mo_num, day_num, [, hr_num[, min_ num[, sec_num[, ms_num]]]])<\/tt><\/p>\n<h2>UTC<\/h2>\n<p><tt>UTC<\/tt> — метод объекта <tt>Date<\/tt>, теперь также поддерживает миллисекунды.<\/p>\n<p><tt>Date.UTC(year, month, date, [, hours[, min[, sec[, ms]]]])<\/tt><\/p>\n<p>Для поддержки <i>UTC<\/i> были введены <tt>getUTCFullYear()<\/tt>, <tt>getUTCMonth()<\/tt>, <tt>getUTCDate()<\/tt>, <tt>getUTCDay()<\/tt>, <tt>getUTCHour()<\/tt>, <tt>getUTCMinutes()<\/tt>, <tt>getUTCSeconds()<\/tt>, <tt>getUTCMilliseconds()<\/tt>, <tt>setUTCFullYear(year [, month[, date]])<\/tt>, <tt>setUTCMonth(month[, date])<\/tt>, <tt>setUTCDate(date)<\/tt>, <tt>setUTCHour(hours[, min[, sec[,ms]]])<\/tt>, <tt>setUTCMinutes(min[, sec[, ms]])<\/tt>, <tt>setUTCSeconds(sec [, ms])<\/tt>, <tt>setUTCMilliseconds(ms)<\/tt> и <tt>toUTCString()<\/tt> ( превращает дату в строку, используя соглашение <i>Universal Coordinates Time<\/i>). Рассматривать эти методы более подробно не имеет смысла, их предназначение вполне понятно из названия.<\/p>\n<h2>Изменения в методах объекта Date<\/h2>\n<p>Методы объекта <tt>Date<\/tt> в версии 1.3 получили дополнительные параметры:<\/p>\n<p><tt>setMonth(month[, date])<\/tt><br \/>\n<tt>setHours(hours[, min[, sec[, ms]]])<\/tt><br \/>\n<tt>setMinutes(min[, sec[, ms]])<\/tt><br \/>\n<tt>setSeconds(sec[, ms])<\/tt><br \/>\nТеперь эти методы по своей форме полностью эквивалентны методам <tt>setUTC-<\/tt>.<\/p>\n<h2>Новые методы объекта Function<\/h2>\n<h3>call<\/h3>\n<h4>Синтаксис<\/h4>\n<p><tt>call(thisArg, arg1, arg2, ...)<\/tt><\/p>\n<h4>Параметры<\/h4>\n<p><tt>thisArg<\/tt> —вызываемый объект<br \/>\n<tt>arg1, arg2,…<\/tt> — параметры вызываемого объекта<\/p>\n<p><tt>call<\/tt> позволяет вызывать методы одних объектов в контексте других (вызвавших) объектов. Это дает возможность задать свое значение объекту <tt>this<\/tt>, при вызове функции и, что самое главное, метод <tt>call<\/tt> позволяет написать метод один раз и наследовать его для других объектов не переписывая их! (См. также <tt>apply<\/tt>).<\/p>\n<p>Пример:<\/p>\n<pre class=\"e2-text-code\"><code class=\"javascript\">function product(name, value)\r\n{\r\n\tthis.name = name;\r\n\tif(value &gt; 1000) this.value = 999; else this.value = value;\r\n}\r\nfunction prod_dept(name, value, dept)\r\n{\r\n\tthis.dept = dept;\r\n\tproduct.call(this, name, value);\r\n}\r\nprod_dept.prototype = new product();\r\ncheese = new prod_dept(feta, 5, food);  \r\ncar = new prod_dept(honda, 5000, auto);<\/code><\/pre><h3>apply<\/h3>\n<h4>Синтаксис<\/h4>\n<p><tt>apply(thisArg, argArray)<\/tt><\/p>\n<h4>Параметры<\/h4>\n<p><tt>thisArg<\/tt> — вызываемый объект<br \/>\n<tt>arg1, arg2,…<\/tt> — параметры вызываемого объекта<\/p>\n<p><tt>apply<\/tt> позволяет применять методы одних объектов в контексте других (вызывающих). Так же как и в <tt>call<\/tt> объект <tt>this<\/tt> может принимать заданное значение (<tt>this<\/tt> будет указывать на текущий, вызвавший объект). <tt>apply<\/tt> очень напоминает <tt>call<\/tt>, отличие лишь в типах параметров (аргументов) вызываемого объекта. В методе <tt>apply<\/tt> возможно использование любых типов массивов. Например: <tt>apply(this, new Array(name, value))<\/tt>. Разрешается так же использовать свойства вызываемого объекта. Можно использовать <tt>arguments<\/tt> для передачи всех параметров вызываемому объекту.<\/p>\n<p>Пример:<\/p>\n<pre class=\"e2-text-code\"><code class=\"javascript\">function product(name, value)\r\n{\r\n\tthis.name = name;\r\n\tif(value &gt; 1000) this.value = 999; else\r\n\tthis.value = value;\r\n}\r\nfunction prod_dept(name, value, dept)\r\n{\r\n\tthis.dept = dept;\r\n\tproduct.apply(product, arguments);\r\n}\r\nprod_dept.prototype = new product();\r\ncheese = new prod_dept(feta, 5, food);\r\ncar = new prod_dept(honda, 5000, auto);<\/code><\/pre><h2>Операторы === и !==<\/h2>\n<p>Операторы <tt>===<\/tt> и <tt>!==<\/tt> проверяют на соответствие (и не соответствие) операнды одинаковых типов (т. е. например оба операнда должны быть типа <tt>String<\/tt>). При сравнении с помощью этих операторов не происходит преобразования типов. Их использование необходимо, когда нужно убедиться, что оба операнда имеют одинаковый тип и одинаковые (или разные) значения.<\/p>\n<p>Пример:<\/p>\n<pre class=\"e2-text-code\"><code class=\"javascript\">10 === &#039;10&#039;<\/code><\/pre><p>вернет <tt>false<\/tt>, тогда как<\/p>\n<pre class=\"e2-text-code\"><code class=\"javascript\">10 == &#039;10&#039;<\/code><\/pre><p>вернет <tt>true<\/tt>.<\/p>\n<h2>Изменения в операторах == и !=<\/h2>\n<p>Если операнды разного типа, происходит преобразование. Как результат возвращается значение типа <tt>Boolean<\/tt>. Если типы операндов одинаковы, то операторы <tt>==<\/tt> и <tt>!=<\/tt> эквивалентны <tt>===<\/tt> и <tt>!==<\/tt>. Значения <tt>null<\/tt> и <tt>undefined<\/tt> считаются одинаковыми, <tt>NaN<\/tt> считается не равным ни одному значению, включая <tt>NaN<\/tt>.<\/p>\n<p>Пример:<\/p>\n<pre class=\"e2-text-code\"><code class=\"javascript\">10==&#039;10&#039;<\/code><\/pre><p>возвращает <tt>true<\/tt>.<\/p>\n<h2>Изменения в объекте Array<\/h2>\n<h3>Свойство length<\/h3>\n<p>Длина массива (свойство <tt>length<\/tt>) теперь задается беззнаковым 32-битным целым. Значение свойства <tt>length<\/tt> может лежать в пределах от 0 до 2<sup>32-1<\/sup>.<\/p>\n<h3>Конструктор<\/h3>\n<p>В <i>JavaScript 1.3<\/i> при использовании конструктора с единичным параметром (<tt>new Array(len)<\/tt>) конструктор проверяет тип параметра. Если это число конструктор конвертирует его в 32-битное беззнаковое целое и создает массив со свойством <tt>length(размер массива)<\/tt>, установленное в <tt>integer<\/tt>. Начальные значения элементов массива — <tt>undefined<\/tt>.<\/p>\n<h3>Метод push<\/h3>\n<p>В <i>JavaScript 1.2<\/i> метод <tt>push<\/tt> возвращал последний элемент, добавленный к массиву. В версии 1.3 метод возвращает новую длину массива.<\/p>\n<h3>Метод splice<\/h3>\n<p>В <i>JavaScript 1.2<\/i> метод <tt>splice<\/tt> возвращал удаленный элемент, если удалялся только один элемент (параметр <tt>howMany<\/tt> равен 1). В <i>JavaScript 1.3<\/i> <tt>splice<\/tt> всегда возвращает массив, содержащий удаленные элементы. Если удаляется только один элемент, то <tt>splice<\/tt> вернет массив, содержащий один единственный элемент.<\/p>\n<h2>Метод replace объекта String<\/h2>\n<h4>Синтаксис<\/h4>\n<p><tt>replace(regexp, newSubStr)<\/tt><br \/>\n<tt>replace(regexp, function)<\/tt><\/p>\n<p>В <i>JavaScript 1.3<\/i> в качестве второго параметра можно использовать функцию. В этом случае заданная функция будет вызвана после метода <tt>match<\/tt> и ее результат (строка) заменит найденную подстроку. Есть возможность передать найденную подстроку функции. Первый параметр функции содержит найденную подстроку, остальные — подсовпадения в найденной строке. Надеюсь следующий пример разъяснит смысл вышесказанного:<\/p>\n<pre class=\"e2-text-code\"><code class=\"javascript\">&quot;XXzzzz&quot;.replace(\/(X*)(z*)\/, function (str, p1, p2) {return str +&quot; - &quot; + p1 +&quot; , &quot; + p2;} )<\/code><\/pre><p>вернет <tt>XX.zzzz — XX , zzzz<\/tt><\/p>\n<h2>Объект Boolean<\/h2>\n<p>В <i>JavaScript 1.2<\/i> значение <tt>false<\/tt> объекта <tt>Boolean<\/tt> трактовалось как ложь в логических выражениях. Если <tt>Boolean<\/tt> использовался в операторе <tt>if<\/tt> (<tt>if (выражение)<\/tt>), <i>JavaScript 1.2<\/i> использовал значение объекта <tt>Boolean<\/tt>. В <i>JavaScript 1.3<\/i> все объекты в логических выражениях трактуются, как истина, включая объект <tt>Boolean<\/tt>, даже если он имеет значение <tt>false<\/tt>.<\/p>\n<p>Пример:<\/p>\n<pre class=\"e2-text-code\"><code class=\"javascript\">x = new Boolean(false);\r\nif(x) \/\/ значение этого выражения - истина\r\n{\r\n\t\/\/ Выполнение кода\r\n}<\/code><\/pre><h3>toString<\/h3>\n<p>В <i>JavaScript 1.3<\/i> метод <tt>toString<\/tt> объекта <tt>Object<\/tt> возвращает <tt>[object type]<\/tt>, где <tt>type<\/tt> — имя объекта или имя конструктора объекта. Метод <tt>toString<\/tt> объекта <tt>Array<\/tt> вернет строку, содержащую значения всех элементов, разделенных запятыми.<\/p>\n<p>Пример:<\/p>\n<pre class=\"e2-text-code\"><code class=\"javascript\">var SeaLion=new Image();\r\nalert(SeaLion.toString());\t\/\/ выдаст [object Image]<\/code><\/pre><h3>eval<\/h3>\n<p>Функцию <tt>eval<\/tt> можно вызывать не напрямую. Для примера можно использовать следующий код:<\/p>\n<pre class=\"e2-text-code\"><code class=\"javascript\">var x = 2;var y = 4;\r\nvar myEval = eval;\r\nmyEval(x + y);\r\neval(x + y);<\/code><\/pre><h3>Использование операции присваивания в логических выражениях<\/h3>\n<p>Ранние версии <i>JavaScript<\/i> конвертировали операции присваивания в логических выражениях в операции сравнения, другими словами <tt>if (x=y)<\/tt> превращалось в <tt>if (x==y)<\/tt>. В <i>Navigator 4.06<\/i> и выше возможно использование присваивания, если воспользоваться следующей конструкцией: <tt>if ( (x=y) )<\/tt>.<\/p>\n<p><i>Web<\/i>-программист казанского центра интернет Степанищев Евгений<\/p>\n",
            "date_published": "1999-04-28T02:00:00+05:00",
            "date_modified": "2023-05-16T17:37:15+05:00",
            "tags": [
                "citforum",
                "javascript",
                "netscape",
                "программирование"
            ],
            "author": {
                "name": "Евгений Степанищев",
                "url": "https:\/\/bolknote.ru\/",
                "avatar": "https:\/\/bolknote.ru\/pictures\/userpic\/userpic@2x.jpg?1760600028"
            },
            "_date_published_rfc2822": "Wed, 28 Apr 1999 02:00:00 +0500",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "119180",
            "_rss_enclosures": [],
            "_e2_data": {
                "is_favourite": false,
                "links_required": null,
                "og_images": []
            }
        }
    ],
    "_e2_version": 4079,
    "_e2_ua_string": "Aegea 11.0 (v4079e)"
}