<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Блоги: заметки с тегом netscape</title>
<link>https://www.blogengine.me/blogs/tags/netscape/</link>
<description>Автоматически собираемая лента заметок, написанных в блогах на Эгее</description>
<author></author>
<language>ru</language>
<generator>Aegea 11.0 (v4079e)</generator>

<itunes:subtitle>Автоматически собираемая лента заметок, написанных в блогах на Эгее</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit>no</itunes:explicit>

<item>
<title>Тег HYPE (Netscape HYPE tag sound)</title>
<guid isPermaLink="false">125247</guid>
<link>https://bolknote.ru/all/4381/</link>
<pubDate>Wed, 28 Oct 2015 12:08:00 +0500</pubDate>
<author>Евгений Степанищев</author>
<comments>https://bolknote.ru/all/4381/</comments>
<description>
&lt;p&gt;&lt;a href="https://bolknote.ru/"&gt;Евгений Степанищев&lt;/a&gt;:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://bolknote.ru/pictures/2015.10.28@2x.jpg" width="512" height="395" alt="" /&gt;
&lt;div class="e2-text-caption"&gt;Скриншот MacOS 9 с открытым окном браузера&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Пятнадцать лет назад, &lt;a href="https://bolknote.ru/all/2878/"&gt;ковыряя исходники браузера «Нетскейп»&lt;/a&gt;, я наткнулся, в частности, на тег &lt;i&gt;HYPE&lt;/i&gt; — в интернете того времени писали, что он воспроизводит какой-то звук, но только в старых версиях браузера и не под «Виндоуз». «Мака» у меня тогда не было, как и доступа к «Линуксу» с графическим интерфейсом, поэтому безуспешно поискав по интернету подробности, я исследование забросил.&lt;/p&gt;
&lt;p&gt;Сегодня за завтраком, по другому случаю наткнувшись на свою же статью об этом теге, я подумав, что теперь-то в интернете найдётся всё, попробовал разыскать тот самый звук. По-прежнему безуспешно. Есть только несколько чудом сохранившихся страничек, где этот тег упоминается в контексте перечня «пасхальных яиц» «Нетскейпа» и это всё.&lt;/p&gt;
&lt;p&gt;Но времена же изменились! Теперь у нас есть виртуализация, образы виртуальных машин и быстрый интернет! Где-то полчаса ушло на поиск и скачивание второй версии «Нетскейпа», готовой виртуалки с девятой «МакОСью», установку всего найденного, разбирательство как всё запускается. Но при вводе заветного тега меня ждало препятствие, к счастью, устранимое — виртуалка заявила, что у меня нехватает какой-то &lt;i&gt;Sound Machine&lt;/i&gt; и, вместо проигрывания звука, предложила скачать звуковой файл.&lt;/p&gt;
&lt;p&gt;Файл оказался в формате &lt;i&gt;.snd&lt;/i&gt;,  который нормально открылся и проигрался уже в современном «Маке». Его содержимое — фраза «&lt;i&gt;What is global hypermedia?&lt;/i&gt;» (из документа &lt;a href="http://totic.org/nscp/demodoc/demo.html"&gt;&lt;i&gt;NCSA Mosaic Demo&lt;/i&gt;&lt;/a&gt; 1993 года, как объясняется на &lt;a href="https://web.archive.org/web/20170818214723/http://www.yikes.com/netscape/etc.html#1"&gt;одной из страниц&lt;/a&gt; в интернете).&lt;/p&gt;
&lt;p&gt;Я сконвертировал его в обычный МП3 и, если ваш браузер достаточно современный, можете послушать как звучит тот самый секретный тег:&lt;/p&gt;
&lt;div class="e2-text-audio"&gt;
&lt;div class="e2-text-super-wrapper e2-jouele-wrapper"&gt;&lt;a class="jouele" data-space-control="true" data-length="2" href="https://bolknote.ru/audio/hype.mp3"&gt;What is global hypermedia?&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Кстати, жаль, что я не догадался проиграть его на оригинальном «Макинтоше» в &lt;a href="https://fotki.yandex.ru/users/bolknote/album/160584/"&gt;музее Эпл&lt;/a&gt;, в Москве. Если представиться случай, обязательно попробую!&lt;/p&gt;
</description>
</item>

<item>
<title>Найди картинку. Неизведанные возможности Web-дизайна</title>
<guid isPermaLink="false">119394</guid>
<link>https://bolknote.ru/all/search-pic-html/</link>
<pubDate>Sat, 08 May 1999 02:00:00 +0500</pubDate>
<author>Евгений Степанищев</author>
<comments>https://bolknote.ru/all/search-pic-html/</comments>
<description>
&lt;p&gt;&lt;a href="https://bolknote.ru/"&gt;Евгений Степанищев&lt;/a&gt;:&lt;/p&gt;
&lt;p style="background: rgb(222, 235, 217); padding: 10px; color:#000"&gt;Заметка была впервые &lt;a href="http://citforum.ru/internet/html/search_pic.shtml"&gt;опубликована&lt;/a&gt; на сайте «Цитфорум» в 1999-м году, дата публикации примерно восстановлена из «Веб-архива»&lt;/p&gt;
&lt;h2&gt;Использование встроенных в NC картинок.&lt;/h2&gt;
&lt;p&gt;Однажды вечером, из любопытства просматривая файл &lt;i&gt;NETSCAPE.EXE&lt;/i&gt;, я наткнулся на странный текст:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="html"&gt;&amp;lt;IMG SRC=internal-attachment-icon BORDER=0&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Словечко &lt;i&gt;internal&lt;/i&gt; наталкивало на определенные мысли и я решил их проверить. Набрав эту строку в виндовом блокноте я посмотрел на результат в &lt;i&gt;NC&lt;/i&gt;. И вот что я увидел:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://bolknote.ru/pictures/1999.05.08.2.png" width="27" height="27" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;&lt;i&gt;Wow&lt;/i&gt;! Я решил отыскать другие встроенные картинки, получился довольно приличный список, но уникальных оказалось не очень много, всего 22 штуки. Не ручаюсь, что я нашел все:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://bolknote.ru/pictures/1999.05.08.1.png" width="288" height="108" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;А вот список имен:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="html"&gt;&amp;lt;IMG SRC=internal-attachment-icon&amp;gt;
&amp;lt;IMG SRC=internal-icon-insecure&amp;gt;
&amp;lt;IMG SRC=internal-icon-show-all-mail-recipients&amp;gt;
&amp;lt;IMG SRC=internal-gopher-binary&amp;gt;
&amp;lt;IMG SRC=internal-gopher-unknown&amp;gt;
&amp;lt;IMG SRC=internal-gopher-movie&amp;gt;
&amp;lt;IMG SRC=internal-gopher-sound&amp;gt;
&amp;lt;IMG SRC=internal-gopher-image&amp;gt;
&amp;lt;IMG SRC=internal-gopher-text&amp;gt;
&amp;lt;IMG SRC=internal-gopher-menu&amp;gt;
&amp;lt;IMG SRC=internal-gopher-index&amp;gt;
&amp;lt;IMG SRC=internal-gopher-telnet&amp;gt;
&amp;lt;IMG SRC=internal-smime-encrypted-bad&amp;gt;
&amp;lt;IMG SRC=internal-smime-signed-bad&amp;gt;
&amp;lt;IMG SRC=internal-smime-encrypted-signed-bad&amp;gt;
&amp;lt;IMG SRC=internal-edit-unsupported-end-tag&amp;gt;
&amp;lt;IMG SRC=internal-edit-unsupported-tag&amp;gt;
&amp;lt;IMG SRC=internal-edit-form-element&amp;gt;
&amp;lt;IMG SRC=internal-edit-named-anchor&amp;gt;
&amp;lt;IMG SRC=about:security?banner-secure&amp;gt;
&amp;lt;IMG SRC=internal-attachment-dl-all-icon&amp;gt;
&amp;lt;IMG SRC=internal-sa-encrypted-bad&amp;gt;
&amp;lt;IMG SRC=internal-sa-signed-bad&amp;gt;
&amp;lt;IMG SRC=internal-news-followup-and-reply&amp;gt;
&amp;lt;IMG SRC=internal-icon-delayed&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Использование встроенных рисунков позволяет ненамного, но все же уменьшить размер страницы. Жаль только, что способ непригоден для &lt;i&gt;Internet Explorer&lt;/i&gt;’a. В идеале хорошо бы при просмотре страницы &lt;i&gt;Netscape&lt;/i&gt;’ом загружался встроенный рисунок, а при использовании &lt;i&gt;IE&lt;/i&gt;, нууу… хотя бы картинка из внешнего файла.&lt;/p&gt;
&lt;p&gt;И тут я вспомнил о введенном еще в &lt;i&gt;IE 2.0&lt;/i&gt; атрибуте &lt;tt&gt;DYNSRC&lt;/tt&gt; тега &lt;tt&gt;IMG&lt;/tt&gt;.&lt;/p&gt;
&lt;p&gt;Этот атрибут предназначен для вывода видеороликов, причем он имеет больший приоритет по сравнению с &lt;tt&gt;SRC&lt;/tt&gt;. Идея оказалась удачной.&lt;/p&gt;
&lt;p&gt;С помощью пресловутой кнопки &lt;i&gt;PrintScreen&lt;/i&gt; и &lt;i&gt;Adobe Photoshop&lt;/i&gt; я изготовил &lt;i&gt;GIF&lt;/i&gt;-файл, содержащий первый в моём списке рисунок: &lt;tt&gt;internal-attached-icon&lt;/tt&gt;, потом при помощи досовской утилиты &lt;i&gt;VFD&lt;/i&gt; я сконвертировал его в &lt;i&gt;AVI&lt;/i&gt;-файл, содержащий один-единственный кадр и сохранил его под именем &lt;i&gt;1.avi&lt;/i&gt;. Создав следующий &lt;i&gt;HTML&lt;/i&gt;-файл:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="html"?"&gt;&amp;lt;BODY BGCOLOR=WhiTE&amp;gt;
&amp;lt;IMG SRC=internal-attachment-icon DYNSRC=1.avi WIDTH=27 HEIGHT=27&amp;gt;
&amp;lt;/BODY&amp;gt;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;я посмотрел результат попеременно в &lt;i&gt;NC&lt;/i&gt; и &lt;i&gt;IE&lt;/i&gt;. Как и следовало ожидать в обоих браузерах я увидел одинаковую картинку:&lt;/p&gt;
&lt;div class="e2-text-picture"&gt;
&lt;img src="https://bolknote.ru/pictures/1999.05.08.2.png" width="27" height="27" alt="" /&gt;
&lt;/div&gt;
&lt;p&gt;Как любил говаривать герой игрушки &lt;i&gt;Duke Nukem 3D&lt;/i&gt; «&lt;i&gt;piece of cake&lt;/i&gt;!». Напоследок я решил просмотреть страничку в браузере &lt;i&gt;Opera 3.51&lt;/i&gt; и тут меня постигло жестокое разочарование: картинка появилась… и иcчезла, я смотрел на абсолютно белую страничку. Проблема решилась добавлением параметра &lt;tt&gt;LOOP=-1&lt;/tt&gt; в тег &lt;tt&gt;IMG&lt;/tt&gt;. Если вы не рассчитываете, что вашу страницу будут смотреть пользователи браузера &lt;i&gt;Opera&lt;/i&gt;, этот параметр лучше убрать, иначе при наведении курсора на картинку он будет мерцать.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Web&lt;/i&gt;-программист казанского центра Интернет Степанищев Евгений.&lt;/p&gt;
</description>
</item>

<item>
<title>Что нового в JavaScript версии 1.3 от Netscape</title>
<guid isPermaLink="false">119180</guid>
<link>https://bolknote.ru/all/js-new13-shtml/</link>
<pubDate>Wed, 28 Apr 1999 02:00:00 +0500</pubDate>
<author>Евгений Степанищев</author>
<comments>https://bolknote.ru/all/js-new13-shtml/</comments>
<description>
&lt;p&gt;&lt;a href="https://bolknote.ru/"&gt;Евгений Степанищев&lt;/a&gt;:&lt;/p&gt;
&lt;p style="background: rgb(222, 235, 217); padding: 10px; color:#000"&gt;Заметка была впервые &lt;a href="http://citforum.ru/internet/javascript/js_new13.shtml"&gt;опубликована&lt;/a&gt; на сайте «Цитфорум» в 1999-м году, дата публикации примерно восстановлена из «Веб-архива»&lt;/p&gt;
&lt;p&gt;Язык &lt;i&gt;JavaScript 1.3&lt;/i&gt; поддерживается &lt;i&gt;Navigator&lt;/i&gt;’ом версий 4.06 и 4.5.&lt;/p&gt;
&lt;h2&gt;Поддержка Unicode&lt;/h2&gt;
&lt;p&gt;В строках теперь стало возможным использование любых символов из таблицы &lt;i&gt;Unicode&lt;/i&gt;, которые кодируются как шесть &lt;i&gt;ASCII&lt;/i&gt;-символов: &lt;tt&gt;\u&lt;/tt&gt; и 4 цифры в шестнадцатеричной кодировке, например, &lt;tt&gt;\u0041&lt;/tt&gt; — латинская буква «A» из таблицы &lt;i&gt;Unicode&lt;/i&gt;. Каждая такая последовательность добавляет только один символ к строке. Функции &lt;tt&gt;escape&lt;/tt&gt; и &lt;tt&gt;unescape&lt;/tt&gt; не подвергались изменениям и не используют &lt;i&gt;Unicode&lt;/i&gt;-последовательности.&lt;/p&gt;
&lt;p&gt;Следующий пример выведет на экран символ «копирайт» и строку «&lt;i&gt;Netscape Communicator&lt;/i&gt;»:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="javascript"&gt;alert(&amp;quot;\u00A9 Netscape Communicator&amp;quot;);&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Следующая таблица содержит список наиболее часто используемых специальных символов и их коды в Unicode:&lt;/p&gt;
&lt;div class="e2-text-table"&gt;
&lt;table cellpadding="0" cellspacing="0" border="0"&gt;
&lt;tr&gt;
&lt;td&gt;Unicode&lt;/td&gt;
&lt;td&gt;Наименование&lt;/td&gt;
&lt;td style="text-align: center"&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;\u0009&lt;/td&gt;
&lt;td&gt;Tab&lt;/td&gt;
&lt;td&gt;&lt;TAB&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;\u000B&lt;/td&gt;
&lt;td&gt;Vertical Tab&lt;/td&gt;
&lt;td&gt;&amp;lt;VT&amp;gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;\u000C&lt;/td&gt;
&lt;td&gt;Form Feed&lt;/td&gt;
&lt;td&gt;&amp;lt;FF&amp;gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;\u0020&lt;/td&gt;
&lt;td&gt;Space&lt;/td&gt;
&lt;td&gt;&amp;lt;SP&amp;gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;\u000A&lt;/td&gt;
&lt;td&gt;Line Feed&lt;/td&gt;
&lt;td&gt;&amp;lt;LF&amp;gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;\u000D&lt;/td&gt;
&lt;td&gt;Carriage Return&lt;/td&gt;
&lt;td&gt;&amp;lt;CR&amp;gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;\u000b&lt;/td&gt;
&lt;td&gt;Back Space&lt;/td&gt;
&lt;td&gt;&amp;lt;BS&amp;gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;\u0009&lt;/td&gt;
&lt;td&gt;Horizontal Tab&lt;/td&gt;
&lt;td&gt;&amp;lt;HT&amp;gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;\u0022&lt;/td&gt;
&lt;td&gt;Double Quote&lt;/td&gt;
&lt;td&gt;&amp;quot;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;\u0027&lt;/td&gt;
&lt;td&gt;Single Quote&lt;/td&gt;
&lt;td&gt;`&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;\u005C&lt;/td&gt;
&lt;td&gt;Backslash&lt;/td&gt;
&lt;td&gt;\&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p&gt;Вы можете использовать &lt;i&gt;Unicode&lt;/i&gt; для отображения символов в различных языках или технических символов. Для отображения символов &lt;i&gt;Unicode&lt;/i&gt; у клиента должны быть установлены шрифты &lt;i&gt;Unicode&lt;/i&gt;. Некоторые ОС, например &lt;i&gt;Windows 95&lt;/i&gt;, поддерживают &lt;i&gt;Unicode&lt;/i&gt; лишь частично.&lt;/p&gt;
&lt;h2&gt;Новые свойства объекта Global&lt;/h2&gt;
&lt;h3&gt;NaN&lt;/h3&gt;
&lt;h4&gt;Синтаксис&lt;/h4&gt;
&lt;p&gt;&lt;tt&gt;NaN&lt;/tt&gt;&lt;/p&gt;
&lt;p&gt;В &lt;i&gt;JavaScript 1.2&lt;/i&gt; значение &lt;tt&gt;NaN&lt;/tt&gt; (&lt;i&gt;Not-a-Number&lt;/i&gt;) было определено только для объекта &lt;tt&gt;Number&lt;/tt&gt;, в версии 1.3 это значение также определено, и для объекта &lt;tt&gt;global&lt;/tt&gt;. &lt;tt&gt;NaN&lt;/tt&gt; никогда не равно ни одному другому числу, включая &lt;tt&gt;NaN&lt;/tt&gt;. Функции, работающие с числами (например &lt;tt&gt;Number.constructor&lt;/tt&gt;, &lt;tt&gt;parseFloat&lt;/tt&gt; и &lt;tt&gt;parseInt&lt;/tt&gt;) возвращает &lt;tt&gt;NaN&lt;/tt&gt;, если значение параметра не числовое.&lt;/p&gt;
&lt;h3&gt;Infinity&lt;/h3&gt;
&lt;h4&gt;Синтаксис&lt;/h4&gt;
&lt;p&gt;&lt;tt&gt;Infinity&lt;/tt&gt;&lt;/p&gt;
&lt;p&gt;Числовое значение величины &lt;tt&gt;Infinity&lt;/tt&gt; — бесконечность. В &lt;i&gt;JavaScript 1.2&lt;/i&gt; &lt;tt&gt;Infinity&lt;/tt&gt; было определено как свойство объекта &lt;tt&gt;Number&lt;/tt&gt;. У объекта &lt;tt&gt;Number&lt;/tt&gt; есть два свойства &lt;tt&gt;POSITIVE_INFINITY&lt;/tt&gt; и &lt;tt&gt;NEGATIVE_INFINITY&lt;/tt&gt; (для примера, &lt;tt&gt;Number.POSITIVE_INFINITY&lt;/tt&gt;). В &lt;i&gt;JavaScript 1.3&lt;/i&gt; &lt;tt&gt;Infinity&lt;/tt&gt; определено и для объекта &lt;tt&gt;Global&lt;/tt&gt;. Значение &lt;tt&gt;Infinity&lt;/tt&gt; (положительная бесконечность) всегда больше, чем любое другое число, включая себя. &lt;tt&gt;Infinity&lt;/tt&gt; полностью соответствует математической бесконечности. Например любое число, умноженное на &lt;tt&gt;Infinity&lt;/tt&gt;, есть &lt;tt&gt;Infinity&lt;/tt&gt;, любое число, деленное на &lt;tt&gt;Infinity&lt;/tt&gt;, есть 0.&lt;/p&gt;
&lt;h3&gt;undifined&lt;/h3&gt;
&lt;h4&gt;Синтаксис&lt;/h4&gt;
&lt;p&gt;&lt;tt&gt;undefined&lt;/tt&gt;&lt;/p&gt;
&lt;p&gt;Переменные, которым не было присвоено значение, имеют значение &lt;tt&gt;undefined&lt;/tt&gt;. Теперь вы можете использовать &lt;tt&gt;undefined&lt;/tt&gt; для проверки того, было ли присвоено переменной значение. Методы и выражения &lt;i&gt;JavaScript&lt;/i&gt; также возвращают значение &lt;tt&gt;undefined&lt;/tt&gt;, если используемые переменные не имеют своего значения. &lt;tt&gt;undefined&lt;/tt&gt; — это свойство объекта &lt;tt&gt;Global&lt;/tt&gt;, которое имеет значение &lt;tt&gt;undefined&lt;/tt&gt;.&lt;/p&gt;
&lt;p&gt;Пример:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="javascript"&gt;var input;
if(input == undefined){
    document.write(&amp;quot;переменной input значение не присвоено&amp;quot;);
}&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;Новые функции объекта Global (IsFinite)&lt;/h2&gt;
&lt;h3&gt;IsFinite&lt;/h3&gt;
&lt;h4&gt;Синтаксис&lt;/h4&gt;
&lt;p&gt;&lt;tt&gt;IsFinite(число)&lt;/tt&gt;&lt;/p&gt;
&lt;p&gt;Вы можете использовать эту функцию, для определения конечности числа. Если аргумент функции &lt;tt&gt;NaN&lt;/tt&gt; положительная или отрицательная бесконечность, функция возвращает &lt;tt&gt;false&lt;/tt&gt;, иначе она возвращает &lt;tt&gt;true&lt;/tt&gt;.&lt;/p&gt;
&lt;p&gt;Пример:&lt;br /&gt;
Проверка числа на конечность&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="javascript"&gt;if(isFinite(Input) == true)
{
    // Ваш код
}&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;Метод toSource&lt;/h2&gt;
&lt;h4&gt;Синтаксис&lt;/h4&gt;
&lt;p&gt;&lt;tt&gt;toSource()&lt;/tt&gt;&lt;/p&gt;
&lt;p&gt;Это новый метод, определенный для всех встроенных объектов. Большинство объектов наследуют этот метод от &lt;tt&gt;Object&lt;/tt&gt;. Метод &lt;tt&gt;toSource&lt;/tt&gt; базируется на методе &lt;tt&gt;toString&lt;/tt&gt; объектов &lt;tt&gt;Object&lt;/tt&gt; и &lt;tt&gt;Array&lt;/tt&gt;.&lt;/p&gt;
&lt;p&gt;&lt;tt&gt;toSource&lt;/tt&gt; возвращает строку, которой вы создавали объект. Вы можете подставлять это значение в функцию &lt;tt&gt;eval&lt;/tt&gt;, сохранять его и др. Для объекта &lt;tt&gt;tools&lt;/tt&gt; метод &lt;tt&gt;eval(tools.toSource())&lt;/tt&gt; вернет копию объекта &lt;tt&gt;tools&lt;/tt&gt;. Если &lt;tt&gt;tools&lt;/tt&gt; содержит рекурсивные свойства, то строка, которую вернет функция &lt;tt&gt;toSource()&lt;/tt&gt; может выглядеть странно.&lt;/p&gt;
&lt;p&gt;Пример:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="javascript"&gt;product = {type: &amp;quot;electronic&amp;quot;, value: 500};
myList = [&amp;quot;school&amp;quot;, 4, &amp;quot;home&amp;quot;, 10];
myBool = new Boolean; 
myString = new String(&amp;quot;my line&amp;quot;);
myDate = new Date();
document.write(product.toSource());
document.write(myList.toSource());
document.write(myBool.toSource());
document.write(myString.toSource());
document.write(myDate.toSource());&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;Расширение объекта Date&lt;/h2&gt;
&lt;p&gt;В предыдущих версиях &lt;i&gt;JavaScript&lt;/i&gt; формат даты был зависим от платформы и различных установок. В новой реализации объект &lt;tt&gt;Date&lt;/tt&gt; полностью платформонезависим. Объект &lt;tt&gt;Date&lt;/tt&gt; теперь поддерживает дату и время в формате &lt;i&gt;UTC&lt;/i&gt; (&lt;i&gt;Universal Coordinated Time&lt;/i&gt;). Дата задается как количество миллисекунд, прошедших с 1 января 1970 года. День содержит 86400000 миллисекунд.&lt;/p&gt;
&lt;p&gt;Следующий пример возвращает разницу между &lt;tt&gt;timeA&lt;/tt&gt; и &lt;tt&gt;timeB&lt;/tt&gt; в миллисекундах:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="javascript"&gt;timeA = new Date(); 
alert(&amp;quot;подождем какое-то время&amp;quot;);
timeB = new Date(); 
timeDifference = timeB - timeA;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Для работы с миллисекундами были добавлены методы &lt;tt&gt;getMilliseconds()&lt;/tt&gt; и &lt;tt&gt;setMilliseconds(num_ms)&lt;/tt&gt;, &lt;tt&gt;getUTCMilliseconds()&lt;/tt&gt; и &lt;tt&gt;setUTCMilliseconds(num_ms)&lt;/tt&gt;. Для устранения проблеммы 2000 года добавлены функции &lt;tt&gt;setFullYear&lt;/tt&gt;, &lt;tt&gt;getFullYear&lt;/tt&gt;, &lt;tt&gt;setUTCFullYear&lt;/tt&gt; и &lt;tt&gt;getUTCFullYear&lt;/tt&gt;. &lt;tt&gt;getFullYear&lt;/tt&gt; возвращает полный год, например 1998, а &lt;tt&gt;setFullYear&lt;/tt&gt; — устанавливает. Методы &lt;tt&gt;setYear&lt;/tt&gt; и &lt;tt&gt;getYear&lt;/tt&gt; оставлены для обратной совместимости.&lt;/p&gt;
&lt;h2&gt;Новый конструктор объекта Date&lt;/h2&gt;
&lt;p&gt;Конструктор объекта &lt;tt&gt;Date&lt;/tt&gt; был расширен для поддержки миллисекунд, его полный формат:&lt;/p&gt;
&lt;p&gt;&lt;tt&gt;Date (yr_num, mo_num, day_num, [, hr_num[, min_ num[, sec_num[, ms_num]]]])&lt;/tt&gt;&lt;/p&gt;
&lt;h2&gt;UTC&lt;/h2&gt;
&lt;p&gt;&lt;tt&gt;UTC&lt;/tt&gt; — метод объекта &lt;tt&gt;Date&lt;/tt&gt;, теперь также поддерживает миллисекунды.&lt;/p&gt;
&lt;p&gt;&lt;tt&gt;Date.UTC(year, month, date, [, hours[, min[, sec[, ms]]]])&lt;/tt&gt;&lt;/p&gt;
&lt;p&gt;Для поддержки &lt;i&gt;UTC&lt;/i&gt; были введены &lt;tt&gt;getUTCFullYear()&lt;/tt&gt;, &lt;tt&gt;getUTCMonth()&lt;/tt&gt;, &lt;tt&gt;getUTCDate()&lt;/tt&gt;, &lt;tt&gt;getUTCDay()&lt;/tt&gt;, &lt;tt&gt;getUTCHour()&lt;/tt&gt;, &lt;tt&gt;getUTCMinutes()&lt;/tt&gt;, &lt;tt&gt;getUTCSeconds()&lt;/tt&gt;, &lt;tt&gt;getUTCMilliseconds()&lt;/tt&gt;, &lt;tt&gt;setUTCFullYear(year [, month[, date]])&lt;/tt&gt;, &lt;tt&gt;setUTCMonth(month[, date])&lt;/tt&gt;, &lt;tt&gt;setUTCDate(date)&lt;/tt&gt;, &lt;tt&gt;setUTCHour(hours[, min[, sec[,ms]]])&lt;/tt&gt;, &lt;tt&gt;setUTCMinutes(min[, sec[, ms]])&lt;/tt&gt;, &lt;tt&gt;setUTCSeconds(sec [, ms])&lt;/tt&gt;, &lt;tt&gt;setUTCMilliseconds(ms)&lt;/tt&gt; и &lt;tt&gt;toUTCString()&lt;/tt&gt; ( превращает дату в строку, используя соглашение &lt;i&gt;Universal Coordinates Time&lt;/i&gt;). Рассматривать эти методы более подробно не имеет смысла, их предназначение вполне понятно из названия.&lt;/p&gt;
&lt;h2&gt;Изменения в методах объекта Date&lt;/h2&gt;
&lt;p&gt;Методы объекта &lt;tt&gt;Date&lt;/tt&gt; в версии 1.3 получили дополнительные параметры:&lt;/p&gt;
&lt;p&gt;&lt;tt&gt;setMonth(month[, date])&lt;/tt&gt;&lt;br /&gt;
&lt;tt&gt;setHours(hours[, min[, sec[, ms]]])&lt;/tt&gt;&lt;br /&gt;
&lt;tt&gt;setMinutes(min[, sec[, ms]])&lt;/tt&gt;&lt;br /&gt;
&lt;tt&gt;setSeconds(sec[, ms])&lt;/tt&gt;&lt;br /&gt;
Теперь эти методы по своей форме полностью эквивалентны методам &lt;tt&gt;setUTC-&lt;/tt&gt;.&lt;/p&gt;
&lt;h2&gt;Новые методы объекта Function&lt;/h2&gt;
&lt;h3&gt;call&lt;/h3&gt;
&lt;h4&gt;Синтаксис&lt;/h4&gt;
&lt;p&gt;&lt;tt&gt;call(thisArg, arg1, arg2, ...)&lt;/tt&gt;&lt;/p&gt;
&lt;h4&gt;Параметры&lt;/h4&gt;
&lt;p&gt;&lt;tt&gt;thisArg&lt;/tt&gt; —вызываемый объект&lt;br /&gt;
&lt;tt&gt;arg1, arg2,…&lt;/tt&gt; — параметры вызываемого объекта&lt;/p&gt;
&lt;p&gt;&lt;tt&gt;call&lt;/tt&gt; позволяет вызывать методы одних объектов в контексте других (вызвавших) объектов. Это дает возможность задать свое значение объекту &lt;tt&gt;this&lt;/tt&gt;, при вызове функции и, что самое главное, метод &lt;tt&gt;call&lt;/tt&gt; позволяет написать метод один раз и наследовать его для других объектов не переписывая их! (См. также &lt;tt&gt;apply&lt;/tt&gt;).&lt;/p&gt;
&lt;p&gt;Пример:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="javascript"&gt;function product(name, value)
{
	this.name = name;
	if(value &amp;gt; 1000) this.value = 999; else this.value = value;
}
function prod_dept(name, value, dept)
{
	this.dept = dept;
	product.call(this, name, value);
}
prod_dept.prototype = new product();
cheese = new prod_dept(feta, 5, food);  
car = new prod_dept(honda, 5000, auto);&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;apply&lt;/h3&gt;
&lt;h4&gt;Синтаксис&lt;/h4&gt;
&lt;p&gt;&lt;tt&gt;apply(thisArg, argArray)&lt;/tt&gt;&lt;/p&gt;
&lt;h4&gt;Параметры&lt;/h4&gt;
&lt;p&gt;&lt;tt&gt;thisArg&lt;/tt&gt; — вызываемый объект&lt;br /&gt;
&lt;tt&gt;arg1, arg2,…&lt;/tt&gt; — параметры вызываемого объекта&lt;/p&gt;
&lt;p&gt;&lt;tt&gt;apply&lt;/tt&gt; позволяет применять методы одних объектов в контексте других (вызывающих). Так же как и в &lt;tt&gt;call&lt;/tt&gt; объект &lt;tt&gt;this&lt;/tt&gt; может принимать заданное значение (&lt;tt&gt;this&lt;/tt&gt; будет указывать на текущий, вызвавший объект). &lt;tt&gt;apply&lt;/tt&gt; очень напоминает &lt;tt&gt;call&lt;/tt&gt;, отличие лишь в типах параметров (аргументов) вызываемого объекта. В методе &lt;tt&gt;apply&lt;/tt&gt; возможно использование любых типов массивов. Например: &lt;tt&gt;apply(this, new Array(name, value))&lt;/tt&gt;. Разрешается так же использовать свойства вызываемого объекта. Можно использовать &lt;tt&gt;arguments&lt;/tt&gt; для передачи всех параметров вызываемому объекту.&lt;/p&gt;
&lt;p&gt;Пример:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="javascript"&gt;function product(name, value)
{
	this.name = name;
	if(value &amp;gt; 1000) this.value = 999; else
	this.value = value;
}
function prod_dept(name, value, dept)
{
	this.dept = dept;
	product.apply(product, arguments);
}
prod_dept.prototype = new product();
cheese = new prod_dept(feta, 5, food);
car = new prod_dept(honda, 5000, auto);&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;Операторы === и !==&lt;/h2&gt;
&lt;p&gt;Операторы &lt;tt&gt;===&lt;/tt&gt; и &lt;tt&gt;!==&lt;/tt&gt; проверяют на соответствие (и не соответствие) операнды одинаковых типов (т. е. например оба операнда должны быть типа &lt;tt&gt;String&lt;/tt&gt;). При сравнении с помощью этих операторов не происходит преобразования типов. Их использование необходимо, когда нужно убедиться, что оба операнда имеют одинаковый тип и одинаковые (или разные) значения.&lt;/p&gt;
&lt;p&gt;Пример:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="javascript"&gt;10 === &amp;#039;10&amp;#039;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;вернет &lt;tt&gt;false&lt;/tt&gt;, тогда как&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="javascript"&gt;10 == &amp;#039;10&amp;#039;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;вернет &lt;tt&gt;true&lt;/tt&gt;.&lt;/p&gt;
&lt;h2&gt;Изменения в операторах == и !=&lt;/h2&gt;
&lt;p&gt;Если операнды разного типа, происходит преобразование. Как результат возвращается значение типа &lt;tt&gt;Boolean&lt;/tt&gt;. Если типы операндов одинаковы, то операторы &lt;tt&gt;==&lt;/tt&gt; и &lt;tt&gt;!=&lt;/tt&gt; эквивалентны &lt;tt&gt;===&lt;/tt&gt; и &lt;tt&gt;!==&lt;/tt&gt;. Значения &lt;tt&gt;null&lt;/tt&gt; и &lt;tt&gt;undefined&lt;/tt&gt; считаются одинаковыми, &lt;tt&gt;NaN&lt;/tt&gt; считается не равным ни одному значению, включая &lt;tt&gt;NaN&lt;/tt&gt;.&lt;/p&gt;
&lt;p&gt;Пример:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="javascript"&gt;10==&amp;#039;10&amp;#039;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;возвращает &lt;tt&gt;true&lt;/tt&gt;.&lt;/p&gt;
&lt;h2&gt;Изменения в объекте Array&lt;/h2&gt;
&lt;h3&gt;Свойство length&lt;/h3&gt;
&lt;p&gt;Длина массива (свойство &lt;tt&gt;length&lt;/tt&gt;) теперь задается беззнаковым 32-битным целым. Значение свойства &lt;tt&gt;length&lt;/tt&gt; может лежать в пределах от 0 до 2&lt;sup&gt;32-1&lt;/sup&gt;.&lt;/p&gt;
&lt;h3&gt;Конструктор&lt;/h3&gt;
&lt;p&gt;В &lt;i&gt;JavaScript 1.3&lt;/i&gt; при использовании конструктора с единичным параметром (&lt;tt&gt;new Array(len)&lt;/tt&gt;) конструктор проверяет тип параметра. Если это число конструктор конвертирует его в 32-битное беззнаковое целое и создает массив со свойством &lt;tt&gt;length(размер массива)&lt;/tt&gt;, установленное в &lt;tt&gt;integer&lt;/tt&gt;. Начальные значения элементов массива — &lt;tt&gt;undefined&lt;/tt&gt;.&lt;/p&gt;
&lt;h3&gt;Метод push&lt;/h3&gt;
&lt;p&gt;В &lt;i&gt;JavaScript 1.2&lt;/i&gt; метод &lt;tt&gt;push&lt;/tt&gt; возвращал последний элемент, добавленный к массиву. В версии 1.3 метод возвращает новую длину массива.&lt;/p&gt;
&lt;h3&gt;Метод splice&lt;/h3&gt;
&lt;p&gt;В &lt;i&gt;JavaScript 1.2&lt;/i&gt; метод &lt;tt&gt;splice&lt;/tt&gt; возвращал удаленный элемент, если удалялся только один элемент (параметр &lt;tt&gt;howMany&lt;/tt&gt; равен 1). В &lt;i&gt;JavaScript 1.3&lt;/i&gt; &lt;tt&gt;splice&lt;/tt&gt; всегда возвращает массив, содержащий удаленные элементы. Если удаляется только один элемент, то &lt;tt&gt;splice&lt;/tt&gt; вернет массив, содержащий один единственный элемент.&lt;/p&gt;
&lt;h2&gt;Метод replace объекта String&lt;/h2&gt;
&lt;h4&gt;Синтаксис&lt;/h4&gt;
&lt;p&gt;&lt;tt&gt;replace(regexp, newSubStr)&lt;/tt&gt;&lt;br /&gt;
&lt;tt&gt;replace(regexp, function)&lt;/tt&gt;&lt;/p&gt;
&lt;p&gt;В &lt;i&gt;JavaScript 1.3&lt;/i&gt; в качестве второго параметра можно использовать функцию. В этом случае заданная функция будет вызвана после метода &lt;tt&gt;match&lt;/tt&gt; и ее результат (строка) заменит найденную подстроку. Есть возможность передать найденную подстроку функции. Первый параметр функции содержит найденную подстроку, остальные — подсовпадения в найденной строке. Надеюсь следующий пример разъяснит смысл вышесказанного:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="javascript"&gt;&amp;quot;XXzzzz&amp;quot;.replace(/(X*)(z*)/, function (str, p1, p2) {return str +&amp;quot; - &amp;quot; + p1 +&amp;quot; , &amp;quot; + p2;} )&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;вернет &lt;tt&gt;XX.zzzz — XX , zzzz&lt;/tt&gt;&lt;/p&gt;
&lt;h2&gt;Объект Boolean&lt;/h2&gt;
&lt;p&gt;В &lt;i&gt;JavaScript 1.2&lt;/i&gt; значение &lt;tt&gt;false&lt;/tt&gt; объекта &lt;tt&gt;Boolean&lt;/tt&gt; трактовалось как ложь в логических выражениях. Если &lt;tt&gt;Boolean&lt;/tt&gt; использовался в операторе &lt;tt&gt;if&lt;/tt&gt; (&lt;tt&gt;if (выражение)&lt;/tt&gt;), &lt;i&gt;JavaScript 1.2&lt;/i&gt; использовал значение объекта &lt;tt&gt;Boolean&lt;/tt&gt;. В &lt;i&gt;JavaScript 1.3&lt;/i&gt; все объекты в логических выражениях трактуются, как истина, включая объект &lt;tt&gt;Boolean&lt;/tt&gt;, даже если он имеет значение &lt;tt&gt;false&lt;/tt&gt;.&lt;/p&gt;
&lt;p&gt;Пример:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="javascript"&gt;x = new Boolean(false);
if(x) // значение этого выражения - истина
{
	// Выполнение кода
}&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;toString&lt;/h3&gt;
&lt;p&gt;В &lt;i&gt;JavaScript 1.3&lt;/i&gt; метод &lt;tt&gt;toString&lt;/tt&gt; объекта &lt;tt&gt;Object&lt;/tt&gt; возвращает &lt;tt&gt;[object type]&lt;/tt&gt;, где &lt;tt&gt;type&lt;/tt&gt; — имя объекта или имя конструктора объекта. Метод &lt;tt&gt;toString&lt;/tt&gt; объекта &lt;tt&gt;Array&lt;/tt&gt; вернет строку, содержащую значения всех элементов, разделенных запятыми.&lt;/p&gt;
&lt;p&gt;Пример:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="javascript"&gt;var SeaLion=new Image();
alert(SeaLion.toString());	// выдаст [object Image]&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;eval&lt;/h3&gt;
&lt;p&gt;Функцию &lt;tt&gt;eval&lt;/tt&gt; можно вызывать не напрямую. Для примера можно использовать следующий код:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class="javascript"&gt;var x = 2;var y = 4;
var myEval = eval;
myEval(x + y);
eval(x + y);&lt;/code&gt;&lt;/pre&gt;&lt;h3&gt;Использование операции присваивания в логических выражениях&lt;/h3&gt;
&lt;p&gt;Ранние версии &lt;i&gt;JavaScript&lt;/i&gt; конвертировали операции присваивания в логических выражениях в операции сравнения, другими словами &lt;tt&gt;if (x=y)&lt;/tt&gt; превращалось в &lt;tt&gt;if (x==y)&lt;/tt&gt;. В &lt;i&gt;Navigator 4.06&lt;/i&gt; и выше возможно использование присваивания, если воспользоваться следующей конструкцией: &lt;tt&gt;if ( (x=y) )&lt;/tt&gt;.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Web&lt;/i&gt;-программист казанского центра интернет Степанищев Евгений&lt;/p&gt;
</description>
</item>


</channel>
</rss>