2013-07-18 2 views
5

В чем разница между назначением объекта объекту и его определением? Какой из них лучше и как?Разница между определением и присваиванием свойства

Это

Object.defineProperty(obj,p,propDesc) 

Или просто

obj.p="someValue"; 
+0

A * propertyDesciptor * не является значением 'something' * *? – Bergi

+0

Возможный дубликат [Определение по сравнению с назначением] (http://stackoverflow.com/questions/15989483/definition-versus-assignment) – givanse

ответ

2

Object.defineProperty позволяет установить целую кучу вариантов об этой собственности. Как enumerable и writable.

Когда вы делаете obj.p = 'something';, вы устанавливаете свойство с параметрами «по умолчанию».

Ни один из них не «лучше», каждый из них имеет свои собственные цели. Какой из них вы используете, зависит от ваших требований.

+0

Присвоение свойств часто используется для добавления новых свойств к объекту. В моем сообщении объясняется, что это может вызвать проблемы. Следовательно, лучше следовать простым правилам: Если вы хотите создать новое свойство, используйте определение. Если вы хотите изменить значение свойства, используйте назначение. –

+1

@Maizere: Нет. Эти случаи, в которых он вызывает проблемы, не существуют в нормальном коде, и вы должны использовать назначение везде. – Bergi

0

Как найти на https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty

" Этот метод позволяет точно дополнение к модификации или свойства на объекте. Добавление Нормальное свойство создает посредством присвоения свойств, которые показывают во время перечисления свойств (для ... в цикле или Object.keys), значения которых могут быть изменены и которые могут быть удалены. Этот метод позволяет изменять эти дополнительные детали с их значений по умолчанию ».

Смежные вопросы