Mir-knigi.online
Книги онлайн читать бесплатно!
  • Главная
  • Жанры
  • ТОП книг
  • ТОП авторов
  • Контакты

JavaScript. Подробное руководство, 6-е издание

Часть 66 из 535 Информация о книге

<b>delete this.f; // Это свойство также нельзя удалить</b>

При удалении настраиваемых свойств глобального объекта в нестрогом режиме допускается опускать ссылку на глобальный объект и передавать оператору

<b>delete</b>
только имя свойства:

<b>this.x =1; // Создать настраиваемое глобальное свойство (без var)</b>

<b>delete х; // И удалить его</b>

Однако в строгом режиме оператор

<b>delete</b>
возбуждает исключение
<b>SyntaxError</b>
, если его операндом является неквалифицированный идентификатор, такой как х, поэтому необходимо указывать явное выражение обращения к свойству:

<b>delete х; // В строгом режиме возбудит исключение SyntaxError</b>

<b>delete this.x; // Такой способ работает</b>

6.4. Проверка существования свойств

Объекты в языке JavaScript можно рассматривать как множества свойств, и нередко бывает полезно иметь возможность проверить принадлежность к множеству - проверить наличие в объекте свойства с данным именем. Выполнить такую проверку можно с помощью оператора

<b>in</b>
, с помощью методов
<b>hasOwnProperty()</b>
и
<b>propertylsEnumerable()</b>
или просто обратившись к свойству.

Оператор

<b>in</b>
требует, чтобы в левом операнде ему было передано имя свойства (в виде строки) и объект в правом операнде. Он возвращает
<b>true</b>
, если объект имеет собственное или унаследованное свойство с этим именем:

<b>var о = { х: 1 }</b>

<b>”х&quot; in о; // true: о имеет собственное свойство &quot;х&quot;</b>

<b>&quot;у&quot; in о; // false: о не имеет свойства &quot;у&quot;</b>

<b>&quot;toString&quot; in о; // true: о наследует свойство toString</b>

Метод

<b>hasOwnProperty()</b>
объекта проверяет, имеет ли объект собственное свойство с указанным именем. Для наследуемых свойств он возвращает
<b>false</b>
:

<b>var о = { х: 1 }</b>

<b>о.hasOwnPropertyC'x&quot;); // true: о имеет собственное свойство х</b>

<b>о.hasOwnPropertyC'y&quot;); // false: не имеет свойства у</b>

<b>о.hasOwnProperty(&quot;toString&quot;); // false: toString - наследуемое свойство</b>

Метод

<b>propertylsEnumerable()</b>
накладывает дополнительные ограничения по сравнению с
<b>hasOwnProperty()</b>
. Он возвращает
<b>true</b>
, только если указанное свойство является собственным свойством, атрибут
<b>enumerable</b>
которого имеет значение
<b>true</b>
. Свойства встроенных объектов не являются перечислимыми. Свойства, созданные обычной программой на языке JavaScript, являются перечислимыми, если не был использован один из методов ECMAScript 5, представленных ниже, которые делают свойства неперечислимыми.

<b>var о = inherit({ у: 2 }); о.х = 1;</b>

<b>о.propertyIsEnumerable(&quot;x“); // true: о имеет собств. перечислимое свойство х </b>

<b>о.propertyIsEnumerable(&quot;у&quot;); // false: у - унаследованное свойство, не собств.</b>

<b>Object.prototype.propertyIsEnumerable(&quot;toString”); // false: неперечислимое</b>

<b>var о = { х: 1 }</b>

<b>о.х !== undefined; // true: о имеет свойство х</b>

<b>о.у !== undefined; // false; о не имеет свойства у</b>

<b>o.toString !== undefined; // true: о наследует свойство toString</b>

Однако оператор

<b>in</b>
отличает ситуации, которые неотличимы при использовании представленного выше приема на основе обращения к свойству. Оператор
<b>in</b>
отличает отсутствие свойства от свойства, имеющего значение
<b>undefined</b>
. Взгляните на следующий пример:

<b>var о = { х: undefined } // Свойству явно присвоено значение undefined</b>

<b>о.х !== undefined        // false: свойство имеется, но со значением undefined</b>

<b>о.у !== undefined        // false: свойство не существует</b>

<b>&quot;х&quot; in о                 // true: свойство существует</b>

<b>&quot;у” in о                 // false: свойство не существует</b>

<b>delete о.х;              // Удалить свойство х</b>

<b>&quot;х&quot; in о                 // false: оно больше не существует</b>

Обратите внимание, что в примере выше использован оператор

<b>!==</b>
, а не
<b>!=</b>
. Опера¬торы
<b>!==</b>
и
<b>===</b>
отличают значения
<b>undefined</b>
и
<b>null</b>
, хотя иногда в этом нет необходимости:

<b>// Если о имеет свойство X, значение которого отлично от null и undefined,</b>

<b>// то удвоить это значение, </b>

<b>if (о.х != null) о.х *= 2;</b>

<b>// Если о имеет свойство х, значение которого не может быть преобразовано в false,</b>


Перейти к странице:
Предыдущая страница
Следующая страница
Жанры
  • Военное дело
  • Деловая литература
  • Детективы и триллеры
  • Детские
  • Детские книги
  • Документальная литература
  • Дом и дача
  • Дом и Семья
  • Жанр не определен
  • Зарубежная литература
  • Знания и навыки
  • История
  • Компьютеры и Интернет
  • Легкое чтение
  • Любовные романы
  • Научно-образовательная
  • Образование
  • Поэзия и драматургия
  • Приключения
  • Проза
  • Прочее
  • Психология и мотивация
  • Публицистика и периодические издания
  • Религия и духовность
  • Родителям
  • Серьезное чтение
  • Спорт, здоровье и красота
  • Справочная литература
  • Старинная литература
  • Техника
  • Фантастика и фентези
  • Фольклор
  • Хобби и досуг
  • Юмор
Mir-knigi.online

Бесплатная онлайн библиотека для чтения книг без регистрации с телефона или компьютера. У нас собраны последние новинки, мировые бестселлеры книжного мира.

Контакты
  • [email protected]
Информация
  • Карта сайта
© mir-knigi.online, 2026. | Вход