Свойства и методы универсального класса Object

Как уже отмечалось, все объекты в JavaScript наследуют свойства и методы класса Object. При этом специализированные классы объектов, как, например, те, что создаются с помощью конструкторов Date() или RegExp(), определяют собственные свойства и методы, но все объекты независимо от своего происхождения помимо всего прочего поддерживают свойства и методы, определенные классом Object. По причине их универсальности эти свойства и методы представляют особый интерес.

à Свойство constructor

В JavaScript любой объект имеет свойство constructor, которое ссылается на функцию-конструктор, используемую для инициализации объекта. Например, если объект d создается с помощью конструктора Date(), то свойство d.constructor ссылается на функцию Date:

var d = new Date( );

d.constructor == Date;// Равно true

Функция-конструктор определяет категорию, или класс, объекта, поэтому свойство constructor может использоваться для определения типа любого заданного объекта. Например, тип неизвестного объекта можно выяснить таким способом:

if ((typeof o == "object") && (o.constructor == Date))

//Какие-то действия с объектом Date...

Проверить значение свойства constructor можно с помощью оператора instanceof, т. е. приведенный фрагмент можно записать несколько иначе:

if ((typeof o == "object") && (o instanceof Date))

à Метод toString()

Метод toString() не требует аргументов; он возвращает строку, каким-либо образом представляющую тип и/или значение объекта, для которого он вызывается.

Интерпретатор JavaScript вызывает этот метод объекта во всех тех случаях, когда ему требуется преобразовать объект в строку. Например, это происходит, когда используется оператор + для конкатенации строки с объектом, или при передаче объекта такому методу, как alert() или document.write().

Метод toString() по умолчанию не очень информативен. Например, следующий фрагмент просто записывает в переменную s строку "[object Object]":

var s = { x:1, y:1 }.toString( );

Этот метод по умолчанию не отображает особенно полезной информации, поэтому многие классы определяют собственные версии метода toString(). Например, когда массив преобразуется в строку, мы получаем список элементов массива, каждый из которых преобразуется в строку, а когда в строку преобразуется функция, мы получаем исходный код этой функции.

à Метод toLocaleString()

В ECMAScript v3 и JavaScript 1.5 класс Object в дополнение к методу toString() определяет метод toLocaleString(). Назначение последнего состоит в получении локализованного строкового представления объекта. По умолчанию метод toLocaleString(), определяемый классом Object, никакой локализации не выполняет; он всегда возвращает в точности такую же строку, что и toString(). Однако подклассы могут определять собственные версии метода toLocaleString(). В ECMA-Script v3 классы Array, Date и Number определяют версии метода toLocaleString(), возвращающие локализованные значения.

à Метод valueOf()

Метод valueOf() во многом похож на метод toString(), но вызывается, когда интерпретатору JavaScript требуется преобразовать объект в значение какого-либо элементарного типа, отличного от строки, – обычно в число. Интерпретатор JavaScript вызывает этот метод автоматически, если объект используется в контексте значения элементарного типа. По умолчанию метод valueOf() не выполняет ничего, что представляло бы интерес, но некоторые встроенные категории объектов переопределяют метод valueOf() (например, Date.valueOf()).

à Метод hasOwnProperty()

Метод hasOwnProperty() возвращает true, если для объекта определено не унаследованное свойство с именем, указанным в единственном строковом аргументе метода. В противном случае он возвращает false. Например:

var o = {};

o.hasOwnProperty("undef"); // false: свойство не определено

o.hasOwnProperty("toString"); // false: toString – это унаследованное свойство

Math.hasOwnProperty("cos"); // true: объект Math имеет свойство cos

Метод hasOwnProperty() определяется стандартом ECMAScript v3 и реализован в JavaScript 1.5 и более поздних версиях.

à Метод propertyIsEnumerable()

Метод propertyIsEnumerable() возвращает true, если в объекте определено свойство с именем, указанным в единственном строковом аргументе метода, и это свойство может быть перечислено циклом for/in. В противном случае метод возвращает false. Например:

var o = { x:1 };

o.propertyIsEnumerable("x");//true: свойство существует

//и является перечислимым

o.propertyIsEnumerable("y");// false: свойство не существует

o.propertyIsEnumerable("valueOf"); //false: свойство неперечислимое

Метод propertyIsEnumerable() определяется стандартом ECMAScript v3 и реализован в JavaScript 1.5 и более поздних версиях.

à Метод isPrototypeOf()

Метод isPrototypeOf() возвращает true, если объект, которому принадлежит метод, является прототипом объекта, передаваемого методу в качестве аргумента. В противном случае метод возвращает false. Например:

var o = {};

Object.prototype.isPrototypeOf(o); //true: o.constructor == Object

Object.isPrototypeOf(o);// false

o.isPrototypeOf(Object.prototype);// false

Function.prototype.isPrototypeOf(Object);// true: Object.constructor == Function








Дата добавления: 2016-01-09; просмотров: 511;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.005 сек.