Методы объектов JavaScript ES5
- Предыдущая страница Прототип объекта JS
- Следующая страница Определение функции JS
ECMAScript 5 (2009) добавил JavaScript многими новыми методами объектов.
Управление объектом
// Создает объект с существующим объектом в качестве прототипа Object.create() // Добавление или изменение свойств объекта Object.defineProperty(object, property, descriptor) // Добавление или изменение свойств объекта Object.defineProperties(object, descriptors) // Доступ к свойству Object.getOwnPropertyDescriptor(object, property) // Возвращает массив всех свойств Object.getOwnPropertyNames(object) // Доступ к прототипу Object.getPrototypeOf(object) // Возвращает массив итерируемых свойств Object.keys(object)
Защита объекта
// Предотвращает добавление свойств к объекту Object.preventExtensions(object) // Возвращает true, если свойства могут быть добавлены к объекту Object.isExtensible(object) // Предотвращает изменение свойств объекта (не значений) Object.seal(object) // Возвращает true, если объект запечатан Object.isSealed(object) // Предотвращает любые изменения в объекте Object.freeze(object) // Возвращает true, если объект заморожен Object.isFrozen(object)
Изменение значения свойства
Грамматика
Object.defineProperty(object, property, {value : value)
например
Этот пример изменяет значение свойства:
const person = { firstName: "Bill", lastName : "Gates", language : "EN" }; // Изменение свойства Object.defineProperty(person, "language", {value : "NO"});
Изменение метаданных
ES5 позволяет изменять следующие метаданные свойств:
writable : true // Значение свойства может быть изменено enumerable : true // Свойство может быть итерировано configurable : true // Свойство может быть повторно настроено
writable : false // Значение свойства не может быть изменено enumerable : false // Свойство не подлежит итерации configurable : false // Свойство не может быть перепрограммировано
ES5 позволяет изменять getter и setter:
// Определение getter get: function() { return language } // Определение setter set: function(value) { language = value }
Этот пример устанавливает language в только чтение:
Object.defineProperty(person, "language", {writable:false});
Этот пример делает language неперечисляемым:
Object.defineProperty(person, "language", {enumerable:false});
Показать все свойства
Этот пример показывает все свойства объекта:
например
const person = { firstName: "Bill", lastName : "Gates", language : "EN" }; Object.defineProperty(person, "language", {enumerable:false}); Object.getOwnPropertyNames(person); // Возвращает массив массивов
Показать перечислимые свойства
Этот пример показывает только перечислимые свойства объекта:
например
const person = { firstName: "Bill", lastName : "Gates", language : "EN" }; Object.defineProperty(person, "language", {enumerable:false}); Object.keys(person); // Возвращает массив перечислимых свойств
Добавление свойства
Этот пример добавляет новый атрибут объекту:
например
// Создание объекта const person = { firstName: "Bill", lastName : "Gates", language : "EN" }; // Добавление свойства Object.defineProperty(person, "year", {value:"2008"});
Добавление Getter и Setter
Object.defineProperty()
Метод также можно использовать для добавления Getter и Setter:
например
// Создание объекта const person = {firstName:"Bill", lastName:"Gates"}; // Определение getter Object.defineProperty(person, "fullName", { get: function () {return this.firstName + " " + this.lastName;} });
например, экземпляр счетчика
// Определение объекта const obj = {counter:0}; // Определение setter Object.defineProperty(obj, "reset", { get : function () {this.counter = 0;} }); Object.defineProperty(obj, "increment", { get : function () {this.counter++;} }); Object.defineProperty(obj, "decrement", { get : function () {this.counter--;} }); Object.defineProperty(obj, "add", { set : function (value) {this.counter += value;} }); Object.defineProperty(obj, "subtract", { set : function (i) {this.counter -= i;} }); // Операции с счетчиком: obj.reset; obj.add = 5; obj.subtract = 1; obj.increment; obj.decrement;
- Предыдущая страница Прототип объекта JS
- Следующая страница Определение функции JS