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

Пример

<b>var о = new Object(); // Создать объект</b>

<b>о.х = 3.14; // Определить свойство</b>

<b>о.propertyIsEnumerable(”х&quot;); // true: х - локальное и перечислимое</b>

<b>о.propertyIsEnumerable(&quot;у&quot;); // false о не имеет свойства у</b>

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

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

См. также

Function.prototype, Object.hasOwnProperty(); глава 6

Object.seal() (ECMAScript 5)

предотвращает добавление и удаление свойств

Синтаксис

<b>Object.seal(o)</b>

Аргументы

о Объект, который должен стать нерасширяемым, с недоступными для настройки свойствами.

Возвращаемое значение

Объект в аргументе о.

Описание

Функция

<b>Object.seal()</b>
делает объект о нерасширяемым (
<b>Object.preventExtensions()</b>
), а все его собственные свойства - ненастраиваемыми. Это предотвращает добваление новых свойств и удаление существующих. Действие этой функции необратимо: нерасширяемый объект с ненастраиваемыми свойствами нельзя вновь сделать расширяемым объектом.

Имейте в виду, что

<b>Object.seal()</b>
не делает свойства объекта доступными только для чтения; используйте для этого функцию
<b>Object.freeze().</b>
Отметьте также, что
<b>Object.seal()</b>
не воздействует на унаследованные свойства. Если в цепочке прототипов объекта, обработанного функцией
<b>Object.seal(),</b>
имеется расширяемый и настраиваемый объект, тогда имеется возможность добавлять и удалять наследуемые им свойства.

Обратите внимание, что эта функция вызывается не как метод объекта: это глобальная функция, которая принимает объект в виде аргумента.

См. также

Object.defineProperty(), Object.freeze(), Object.isSealed(), Object.preventExtensions(), раздел 6.8.3

Object.toLocaleString()

возвращает локализованное строковое представление объекта

Синтаксис

<b>объект.toLocaleString()</b>

Возвращаемое значение

Строковое представление объекта.

Описание

Этот метод предназначен для получения строкового представления объекта, локализованного в соответствии с текущими региональными настройками. Метод

<b>toLocaleString(),</b>
предоставляемый по умолчанию классом
<b>Object</b>
, просто вызывает метод
<b>toString()</b>
и возвращает полученную от него нелокализованную строку. Однако обратите внимание, что другие классы, в том числе
<b>Array</b>
,
<b>Date</b>
и
<b>Number</b>
, определяют собственные версии этого метода для локализованного преобразования в строку. Вы также можете переопределить этот метод собственными классами.

См. также

Array.toLocaleString(), Date.toLocaleString(), Number.toLocaleString(), Object.toString()

Object.toString()

возвращает строковое представление объекта

Синтаксис

<b>объект.toString()</b>

Возвращаемое значение

Строка, представляющая объект.

Описание

Метод

<b>toString()</b>
относится к тем, которые обычно не вызываются явно в JavaScript-программах. Программист определяет этот метод в своих объектах, а система вызывает метод, когда требуется преобразовать объект в строку.

JavaScript вызывает метод

<b>toString()</b>
для преобразования объекта в строку всякий раз, когда объект используется в строковом контексте. Например, если объект преобразуется в строку при передаче в функцию, требующую строкового аргумента:

<b>alert(my_object);</b>

Подобным же образом объекты преобразуются в строки, когда они конкатенируются со строками с помощью оператора +:

<b>var msg = 'Мой объект: ' + my_object;</b>

Метод

<b>toString()</b>
вызывается без аргументов и должен возвращать строку. Чтобы от возвращаемой строки была какая-то польза, эта строка должна каким-либо образом базироваться на значении объекта, для которого был вызван метод.

Определяя в JavaScript специальный класс, целесообразно определить для него метод

<b>toString().</b>
Если этого не сделать, объект наследует метод toString(), определенный по умолчанию в классе
<b>Object</b>
. Этот стандартный метод возвращает строку в формате:

<b>[objectкласс]</b>

где класс - это класс объекта: значение, такое как «Object», «String», «Number», «Function», «Window», «Document» и т.д. Такое поведение стандартного метода

<b>toString()</b>
иногда бывает полезно для определения типа или класса неизвестного объекта. Однако большинство объектов имеют собственную версию
<b>toString(),</b>
поэтому для произвольного объекта о необходимо явно вызывать метод
<b>Object.toString(),</b>
как показано ниже:

<b>Object.prototype.toString.apply(o);</b>

Обратите внимание, что этот способ идентификации неизвестных объектов годится только для встроенных объектов. Если вы определяете собственный класс объектов, то класс для него будет соответствовать значению «Object». В этом случае дополнительную информацию об объекте позволит получить свойство

<b>Object.constructor</b>
. Метод
<b>toString()</b>
может быть очень полезен при отладке JavaScript-программ - он позволяет выводить объекты и видеть их значения. По одной только этой причине есть смысл определять метод
<b>toString()</b>
для каждого создаваемого вами класса.