Object.defineProperty() vs Object.prototype.property vs Object.property когда использовать что?
Может кто-нибудь дать мне хороший пример использования, когда использовать Object.defineProperty(), Object.prototype.property и Object.property.
1 ответ
Представь, что у нас есть person
объект с age
свойство со значением 20
,
Метод Object.defineProperty() определяет новое свойство непосредственно для объекта или изменяет существующее свойство объекта и возвращает объект.
Object.defineProperty(obj, prop, descriptor)
Чем это отличается от обычного оператора присваивания?
Это дает вам больше контроля над созданием свойства, чем стандартное назначение (person.age = 25
). Помимо установки значения, вы можете указать, может ли свойство быть удалено или отредактировано, среди прочего, более подробно изложенное на странице Object.defineProperty().
Несколько примеров
Чтобы добавить к этому человеку поле имени, которое нельзя изменить с помощью оператора присваивания:
Object.defineProperty(person, "name", {value: "Jim", writable: false})
или обновить свойство age и сделать его редактируемым:
Object.defineProperty(person, "age", {value: 25, writable: true})
,
Object.prototype.property и Object.property оба ссылаются на доступ к свойству объекта. Это похоже на доступ к age
собственность person
использование объекта person.age
(вы также можете использовать person["age"]
)