2013-07-18 13 views
5

Jaka jest różnica między przypisaniem właściwości do obiektu a jej definicją? Który z nich jest lepszy i jak?Różnica między definiowaniem i przypisywaniem właściwości

To

Object.defineProperty(obj,p,propDesc) 

Albo po prostu

obj.p="someValue"; 
+0

A * propertyDesciptor * nie jest wartością 'something' * *? – Bergi

+0

możliwy duplikat [Definicja kontra przydział] (http://stackoverflow.com/questions/15989483/definition-versus-assignment) – givanse

Odpowiedz

2

Object.defineProperty pozwala ustawić całą masę opcji o tej własności. Podobnie jak enumerable i writable.

Po wykonaniu obj.p = 'something';, ustawiasz właściwość z opcją "domyślną".

Żadne z nich nie jest "lepsze", każdy ma swoje własne zastosowania. To, którego używasz, zależy od Twoich wymagań.

+0

Przypisanie własności jest często używane do dodawania nowych właściwości do obiektu. Mój post wyjaśnił, że może to powodować problemy. Dlatego najlepiej postępować zgodnie z prostymi zasadami: Jeśli chcesz utworzyć nową właściwość, użyj definicji. Jeśli chcesz zmienić wartość właściwości, użyj przypisania. –

+1

@Maizere: Nie. Te przypadki, w których powoduje problemy, nie istnieją w normalnym kodzie i wszędzie powinieneś używać przypisania. – Bergi

0

jak ustalono https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty

" Metoda ta pozwala na precyzyjną dodawania lub modyfikacji właściwości na obiekcie. Dodanie właściwość normalne poprzez wydzielenie tworzy właściwości, które pojawiają się podczas liczenia właściwość (... w pętli lub Metoda Object.keys), której wartości mogą zostać zmienione i które można usunąć. Ta metoda umożliwia zmianę tych dodatkowych szczegółów z ich wartości domyślnych. "

Powiązane problemy