В чем разница между назначением объекта объекту и его определением? Какой из них лучше и как?Разница между определением и присваиванием свойства
Это
Object.defineProperty(obj,p,propDesc)
Или просто
obj.p="someValue";
В чем разница между назначением объекта объекту и его определением? Какой из них лучше и как?Разница между определением и присваиванием свойства
Это
Object.defineProperty(obj,p,propDesc)
Или просто
obj.p="someValue";
Object.defineProperty
позволяет установить целую кучу вариантов об этой собственности. Как enumerable
и writable
.
Когда вы делаете obj.p = 'something';
, вы устанавливаете свойство с параметрами «по умолчанию».
Ни один из них не «лучше», каждый из них имеет свои собственные цели. Какой из них вы используете, зависит от ваших требований.
Присвоение свойств часто используется для добавления новых свойств к объекту. В моем сообщении объясняется, что это может вызвать проблемы. Следовательно, лучше следовать простым правилам: Если вы хотите создать новое свойство, используйте определение. Если вы хотите изменить значение свойства, используйте назначение. –
@Maizere: Нет. Эти случаи, в которых он вызывает проблемы, не существуют в нормальном коде, и вы должны использовать назначение везде. – Bergi
Как найти на https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty
" Этот метод позволяет точно дополнение к модификации или свойства на объекте. Добавление Нормальное свойство создает посредством присвоения свойств, которые показывают во время перечисления свойств (для ... в цикле или Object.keys), значения которых могут быть изменены и которые могут быть удалены. Этот метод позволяет изменять эти дополнительные детали с их значений по умолчанию ».
A * propertyDesciptor * не является значением 'something' * *? – Bergi
Возможный дубликат [Определение по сравнению с назначением] (http://stackoverflow.com/questions/15989483/definition-versus-assignment) – givanse