Все объекты JavaScript имеют общие свойства и методы, список которых приводится в таблице. Большинство из них полезны только в тех случаях, когда вы работаете с объектами, созданными для выполнения конкретной задачи, и, честно говоря, многие из этих свойств представляют интерес исключительно с точки зрения «продвинутой объектно-ориентированной акробатики».
Свойство | Описание |
Prototype | Ссылка на объект, из которого наследуются свойства, не являющиеся свойствами экземпляра |
Constructor | Ссылка на функцию объекта, играющую роль конструктора этого объекта |
toString() | Преобразует объект в строку (объектно-зависимое поведение) |
toLocaleString() | Преобразует объекте локализованную строку (объектно-зависимое поведение) |
valueOf () | Преобразует объект в подходящий примитивный тип данных, обычно числовой |
hasOwnProperty (СВОЙСТВО) | Возвращает true, если объект имеет свойство экземпляра с именем, указанным значением свойство, иначе возвращает false |
isPrototypeOf (объект) | Возвращает true, если объект служит прототипом объекта, указанного значением объект |
propertyIsEnumerable (свойство) | Возвращает true, если свойство, указанное значением строки свойство, будет перечислено в цикле for/in |
Два общих метода, на которые следует обратить внимание, — это toString() , преобразующий объект в примитивную строку, и valueOf(), преобразующий объект в самый подходящий примитивный тип (как правило, числовой). Эти методы автоматически вызываются при использовании объекта в соответствующем контексте. Рассмотрим, например,
1 |
alert (new Date()); |
Поскольку alert () требует строкового аргумента, интерпретатор «за кулисами» вызывает метод toString () объекта Date. Объект Date «знает», как преобразовать себя в строку, поэтому результатом будет следующее: MON Feb 7 22:15:40 UTS+0200 2005
Метод valueOf () работает аналогично. Когда нет смысла проводить сравнение ссылок, операции сравнения требуют наличия данных примитивных типов. Поэтому при использовании соответствующих операций с объектами, объекты преобразуются в подходящие примитивные формы:
1 2 3 |
var nl = Number(1); var n2 = Number(2); alert (n2 > nl); |
Здесь сравнение вызывает методы valueOf () обоих объектов, чтобы можно было выполнить сравнение. Метод valueOf () дает возможность сравнить два объекта с целью выяснения их равенства:
1 2 3 |
var n1 = Number (314); var n2 = Number (314.); alert(n2.valueOf() == nl.valueOf()); |
Этот программный код предложит ожидаемый результат: true
Чаще всего нет нужды беспокоиться о преобразовании соответствующих значений вручную. Однако информация о существовании инструментов наподобие valueOf () и toString () может оказаться полезной в тех случаях, когда обнаруживаются нежелательные преобразования типов или неподходящие сравнения, особенно при создании пользовательских объектов.