Меню
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON PHP КАК СДЕЛАТЬ
     ❯   

JS Справочник


JavaScript

Модификаторы: Группы: Метасимволы: Квантификаторы: Свойства: Методы:

Window


HTML DOM


HTML События


Web APIs


HTML Объекты


Другие ссылки




JavaScript Object.defineProperty()



Метод Object.defineProperty()

Пример

Добавить свойство:

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

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

Изменить свойство:

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

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

Больше примеров ниже!


Описание

Метод Object.defineProperty() добавляет или изменяет свойство объекта.

Метод Object.defineProperty() позволяет изменять метаданные свойств.

Метод Object.defineProperty() позволяет добавлять методы получения и установки.


Связанные методы:

Object.defineProperty() добавляет или изменяет одно свойство.

Object.defineProperties() добавляет или изменяет множество свойств.


Object.getOwnPropertyNames() возвращает имена свойств объекта.

Object.getOwnPropertyDescriptor() возвращает дескриптор свойства.

Object.getOwnPropertyDescriptors() возвращает дескрипторы всех свойств.


Синтаксис

Object.defineProperty(object, property, descriptor)

Параметры

Параметр Описание
object Обязательно.
Объект.
object Обязательно.
Имя свойства.
descriptor Обязательно.
Дескриптор свойства, которое нужно добавить или изменить:

value: value
writable : true|false
enumerable : true|false
configurable : true|false
get : function
set : function

Возвращаемое значение

Тип Описание
ObjectПереданный объект с внесенными изменениями.

Больше примеров

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

// Изменяем свойство:
Object.defineProperty(person, "language", {
  value: "RU",
  writable : true,
  enumerable : true,
  configurable : true
});

// Перечислить свойства
let txt = "";
for (let x in person) {
  txt += person[x] + "<br>";
}

// Отображение свойств
document.getElementById("demo").innerHTML = txt;
Попробуйте сами »

Далее пример представляет собой тот же код, за исключением того, что он скрывает свойство языка из перечисления:

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

// Изменяем свойство:
Object.defineProperty(person, "language", {
  value: "RU",
  writable : true,
  enumerable : false,
  configurable : true
});

// Перечислить свойства
let txt = "";
for (let x in person) {
  txt += person[x] + "<br>";
}
document.getElementById("demo").innerHTML = txt;
Попробуйте сами »

Сеттеры и геттеры

В этом примере создаются методы установки и получения для защиты обновлений языка в верхнем регистре:

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

// Изменяем свойство:
Object.defineProperty(person, "language", {
  get : function() { return language },
  set : function(value) { language = value.toUpperCase()}
});

// Изменить язык
person.language = "ru";

// Отображение язык
document.getElementById("demo").innerHTML = person.language;
Попробуйте сами »

В этом примере используется геттер для объединения имени и фамилии:

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

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

JavaScript Геттеры и сеттеры идеально подходят для создания счетчиков:

Пример
// Определить сеттеры и геттеры
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 (value) {this.counter -= value;}
});
Попробуйте сами »

Поддержка браузера

Object.defineProperty() — функция ECMAScript5 (ES5).

ES5 (JavaScript 2009) полностью поддерживается во всех современных браузерах с июля 2013 года:

Chrome
23
IE/Edge
11
Firefox
21
Safari
6
Opera
15
Sep 2012 Sep 2012 Apr 2013 Jul 2012 Jul 2013



×

Связаться с отделом продаж

Если вы хотите использовать услуги schoolsw3 как образовательное учреждение, команда или предприятие, отправьте нам электронное письмо:
sales@schoolsw3.com

Сообщить об ошибке

Если вы хотите сообщить об ошибке или внести предложение, отправьте нам электронное письмо:
help@schoolsw3.com

Schoolsw3 оптимизирован для обучения и подготовки. Примеры могут быть упрощены для улучшения чтения и обучения. Учебники, ссылки и примеры постоянно проверяются, чтобы избежать ошибок, но мы не можем гарантировать полную правильность всего контента.
При использовании Schoolsw3 вы соглашаетесь прочитать и принять наши условия использования,
политику использования файлов cookie и конфиденциальности.

Авторское право 1999- © Copyright. Все права защищены. Schoolsw3 работает на SW3.CSS.