GeezerVison is showing developer.mozilla.org — Object - JavaScript | MDN
Object
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. It’s been available across browsers since июль 2015 г..
* Some parts of this feature may have varying levels of support.
Почти все объекты в JavaScript являются экземплярами Object; типичный объект наследует свойства (включая методы) от Object.prototype, хотя эти свойства могут быть затенены (т.е. переопределены). Единственные объекты, которые не наследуют от Object.prototype, - это те, у которых прототип null, или которые происходят от других объектов с прототипом null.
Изменения в объекте Object.prototype видны всем объектам с помощью цепочки прототипов, если свойства и методы, подверженные этим изменениям, не переопределены дальше по цепочке прототипов. Это предоставляет очень мощный, хотя и потенциально опасный механизм для переопределения или расширения поведения объектов. Для обеспечения большей безопасности, Object.prototype - единственный объект в основном языке JavaScript, у которого неизменяемый прототип - прототип Object.prototype всегда null и не может быть изменен.
Следует избегать прямого вызова методов Object.prototype из экземпляра, особенно тех, которые не предназначены для полиморфизма (то есть имеет смысл только их начальное поведение, и объект-наследник не может переопределить его осмысленным образом). Все объекты, являющиеся потомками Object.prototype, могут определять собственное свойство с тем же именем, но с совершенно иной семантикой. Кроме того, эти свойства не наследуются объектами с null-прототипом. Все современные утилиты JavaScript для работы с объектами являются статическими:
В случае, когда семантически эквивалентный статический метод не существует или действительно необходимо использовать метод из Object.prototype, следует вызвать метод call() для целевого объекта, чтобы предотвратить появление у объекта переопределённого свойства, которое может привести к неожиданным результатам.
js const obj = {
foo: 1,
// Не следует определять такой метод в собственном объекте,
// но может не быть возможности предотвратить это, если
// объект получен из внешнего источника данных
propertyIsEnumerable() {
return false;
},
};
obj.propertyIsEnumerable("foo"); // false; неожиданный результат
Object.prototype.propertyIsEnumerable.call(obj, "foo"); // true; ожидаемый результат
js // Инициализатор объекта или литерал
{ [ nameValuePair1[, nameValuePair2[, ...nameValuePairN] ] ] }
// Вызов в качестве конструктора
new Object([value])
Object.length
-
Имеет значение 1.
Object
-
Позволяет добавлять свойства ко всем объектам типа Object.
Object.assign()
-
Создаёт новый объект путём копирования значений всех собственных перечислимых свойств из одного или более исходных объектов в целевой объект.
Object.create()
-
Создаёт новый объект с указанными объектом прототипа и свойствами.
Object.defineProperty()
-
Добавляет к объекту именованное свойство, описываемое переданным дескриптором.
Object.defineProperties()
-
Добавляет к объекту именованные свойства, описываемые переданными дескрипторами.
Object.freeze()
-
Замораживает объект: другой код не сможет удалить или изменить никакое свойство.
Object.getOwnPropertyDescriptor()
-
Возвращает дескриптор свойства для именованного свойства объекта.
Object.getOwnPropertyNames()
-
Возвращает массив, содержащий имена всех переданных объекту собственных перечисляемых и неперечисляемых свойств.
Object.getOwnPropertySymbols()
-
Возвращает массив всех символьных свойств, найденных непосредственно в переданном объекте.
Object.getPrototypeOf()
-
Возвращает прототип указанного объекта.
Object.is()
-
Определяет, являются ли два значения различимыми (то есть, одинаковыми)
Object.isExtensible()
-
Определяет, разрешено ли расширение объекта.
Object.isFrozen()
-
Определяет, был ли объект заморожен.
Object.isSealed()
-
Определяет, является ли объект запечатанным (sealed).
Object.keys()
-
Возвращает массив, содержащий имена всех собственных перечислимых свойств переданного объекта.
Object.observe()
-
Асинхронно наблюдает за изменениями в объекте.
Object.preventExtensions()
-
Предотвращает любое расширение объекта.
Object.seal()
-
Предотвращает удаление свойств объекта другим кодом.
Object.setPrototypeOf()
-
Устанавливает прототип (т.е. внутреннее свойство [[Prototype]])
Все объекты в JavaScript являются потомками Object; все объекты наследуют методы и свойства из прототипа объекта Object, хотя они и могут быть переопределены. Например, прототипы других конструкторов переопределяют свойство constructor и предоставляют свои собственные методы toString(). Изменения в объекте прототипа Object распространяются на все объекты до тех пор, пока свойства и методы, учитывающие эти изменения, не переопределяются дальше по цепочке прототипов.
Object.prototype.__defineGetter__()
-
Связывает функцию со свойством, которое при обращении к нему выполняет эту функцию и возвращает ее возвращаемое значение.
Object.prototype.__defineSetter__()
-
Связывает функцию со свойством, которое при установке выполняет ту функцию, которая изменяет свойство.
Object.prototype.__lookupGetter__()
-
Возвращает функцию, привязанную в качестве средства получения к указанному свойству.
Object.prototype.__lookupSetter__()
-
Возвращает функцию, привязанную в качестве установщика к указанному свойству.
Object.prototype.hasOwnProperty()
-
Возвращает логическое значение, указывающее, содержит ли объект указанное свойство как прямое свойство этого объекта, а не унаследованное через цепочку прототипов.
Object.prototype.isPrototypeOf()
-
Возвращает логическое значение, указывающее, входит ли объект, у которого вызван метод, в цепочку прототипов другого объекта.
Object.prototype.propertyIsEnumerable()
-
Возвращает логическое значение, указывающее, является ли указанное свойство свойством объекта enumerable own.
Object.prototype.toLocaleString()
-
Вызывает toString().
Object.prototype.toString()
-
Возвращает строковое представление объекта.
Object.prototype.valueOf()
-
Возвращает примитивное значение указанного объекта.
Следующие примеры сохраняют пустой объект Object в переменную o:
js const o = new Object();
const o = new Object(undefined);
const o = new Object(null);
Следующий пример сохраняет объекты Boolean в переменную o:
js // эквивалентно o = new Boolean(true);
const o = new Object(true);
js // эквивалентно o = new Boolean(false);
const o = new Object(Boolean());
|