САЙТ ДЛЯ ВЕБ РАЗРАБОТЧИКОВ НА РУССКОМ ЯЗЫКЕ
×

JS Учебник

JS Главная JS Введение JS Установка JS Вывод JS Синтаксис JS Заявления JS Комментарии JS Переменные JS Операторы JS Арифметика JS Присваивания JS Типы данных JS Функции JS Объекты JS Область JS События JS Строки JS Методы строк JS Числа JS Методы чисел JS Массивы JS Методы массива JS Сортировка массива JS Итерация массива JS Даты JS Формат даты JS Метод получения дат JS Методы набора... JS Математические... JS Случайные числа JS Булевы JS Сравнение... JS Заявления if...else JS Заявление switch JS Цикл for JS Цикл while JS Заявление break... JS Преобразование... JS Битовые... JS Регулярные выражения JS Ошибки JS Отладчик JS Подъемный JS Строгий JS Ключевое слово this JS Руководство стиля JS Практика JS Распространенные ошибки JS Эффективность JS Зарезервированные слова JS Версии JS Версия ES5 JS Версия ES6 JS JSON

JS Формы

JS Формы JS Формы API

JS Объекты

Определение объекта Свойства объекта Методы объекта Доступ к объекту Конструкторы объекта Прототипы объекта Объект ECMAScript 5

JS Функции

Определение функции Параметры функции Вызов Функции Вызвать Функцию Применение функции Закрытие Функции

JS HTML DOM

DOM Введение DOM Методы DOM Документы DOM Элементы DOM HTML DOM CSS DOM Анимация DOM События DOM Слушатель события DOM Навигация DOM Узлы DOM Коллекции DOM Список узлов

JS Браузера BOM

JS Окно JS Экран JS Местоположение JS История JS Навигатор JS Всплывающее окна JS Синхронизация JS Cookies

JS AJAX

AJAX Введение AJAX XMLHttp AJAX Запрос AJAX Ответ AJAX XML Файл AJAX PHP AJAX ASP AJAX База данных AJAX Приложения AJAX Примеры

JS JSON

JSON Введение JSON Синтаксис JSON или XML JSON Типы данных JSON Парсинг JSON Строки JSON Объекты JSON Массивы JSON PHP JSON HTML JSON JSONP



JavaScript ES5 методы объектов



ECMAScript 5 добавил в JavaScript много новых методов объектов.

ES5 новые методы объектов

// Добавление или изменение свойства объекта
Object.defineProperty(object, property, descriptor)

// Добавление или изменение многих свойств объекта
Object.defineProperties(object, descriptors)

// Доступ к свойствам
Object.getOwnPropertyDescriptor(object, property)

// Возвращает все свойства в виде массива
Object.getOwnPropertyNames(object)

// Возвращает перечисляемые свойства в виде массива
Object.keys(object)

// Доступ к прототипу
Object.getPrototypeOf(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})

В этом примере изменяется значение свойства:

Пример

var person = {
  firstName: "Андрей",
  lastName : "Щипунов",
  language : "RU"
};

// Изменение свойства
Object.defineProperty(person, "language", {value : "НЕТ"});
Попробуйте сами »


Изменение метаданных

В ES5, позволяет изменить следующее свойство метаданные:

writable : true      // Значение свойства может быть изменено
enumerable : true    // Свойство может быть перечисляемое
configurable : true  // Свойство может быть изменено

В ES5 позволяет геттеры и сеттеры, быть изменены:

// Определение геттер
get: function() { return language }
// Определение сеттер
set: function(value) { language = value }

Этот пример делает language доступным только для чтения:

Object.defineProperty(person, "language", {writable:false});

Этот пример делает language не перечисляемый:

Object.defineProperty(person, "language", {enumerable:false});

Перечисление всех свойств

В этом примере перечислены все свойства объекта:

Пример

var person = {
  firstName: "Андрей",
  lastName : "Щипунов"
  language : "RU"
};

Object.defineProperty(person, "language", {enumerable:false});
Object.getOwnPropertyNames(person);  // Возвращает массив из свойства
Попробуйте сами »

Список перечисляемых свойств

В этом примере перечислены только перечисляемые свойства объекта:

Пример

var person = {
  firstName: "Андрей",
  lastName : "Щипунов"
  language : "RU"
};

Object.defineProperty(person, "language", {enumerable:false});
Object.keys(person);  // Возвращает массив перечисляемых свойств
Попробуйте сами »

Добавление свойства

В этом примере к объекту добавляется новое свойство:

Пример

// Создать объект
var person = {
  firstName: "Андрей",
  lastName : "Щипунов",
  language : "RU"
};

// Добавление свойства
Object.defineProperty(person, "year", {value:"2020"});
Попробуйте сами »

Добавление геттеров и сеттеров

Метод Object.defineProperty(), также можно использовать для добавления геттеров и сеттеров:

Пример

//Создать объект
var person = {firstName:"Андрей", lastName:"Щипунов"};

// Определить геттер
Object.defineProperty(person, "fullName", {
  get : function () {return this.firstName + " " + this.lastName;}
});
Попробуйте сами »

Пример счетчика

Пример

// Определение объекта
var obj = {counter:0};

// Определение сеттеров и геттеров
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;
Попробуйте сами »