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";
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";
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ń.
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. –
@Maizere: Nie. Te przypadki, w których powoduje problemy, nie istnieją w normalnym kodzie i wszędzie powinieneś używać przypisania. – Bergi
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. "
A * propertyDesciptor * nie jest wartością 'something' * *? – Bergi
możliwy duplikat [Definicja kontra przydział] (http://stackoverflow.com/questions/15989483/definition-versus-assignment) – givanse