2013-04-13 3 views
-2

Определение. Чтобы определить свойство, один использует функцию, такую ​​какОпределение по сравнению с назначением

Object.defineProperty (OBJ, PROPNAME, propDesc)

Основная цель этой функции заключается в добавлении (прямое) свойство самостоятельно obj, чьи атрибуты (записываемые и т. д., см. ниже) указаны как propDesc. Вторичная цель - изменить атрибуты свойства, включая его значение.

Задание. Чтобы назначить свойству, один использует выражение, такие как

obj.prop = value 

Основная цель такого выражения для изменения значения. Перед выполнением этого изменения JavaScript конкретизирует цепочку прототипов [1] obj: если в объекте или в одном из его прототипов есть сеттер, то назначение является вызовом этого установщика. Присвоение имеет побочный эффект создания свойства, если оно не существует, но - как собственное свойство obj с атрибутами по умолчанию.

Но каковы различия и последствия этих двух методов?

+0

У вас есть конкретный пример, на который вы смотрите? Трудно прокомментировать. – Nerdwood

+0

@Nerdwood я просто хотел узнать разницу между ними –

ответ

1

В принципе, Object.defineProperty(obj, propName, propDesc) дает вам гораздо больше контроля над определением свойств для вашего объекта, а самое главное, как можно получить доступ к каждому свойству. obj.prop = value не дает вам никакого контроля над тем, как можно получить доступ к ресурсу позже (после определения).

Важно: Object.defineProperty() будет LOT медленнее, чем простое определение свойства, поэтому, если вам не нужно контролировать способ доступа к ресурсу в дальнейшем, не используйте Object.defineProperty().

Have a look at this article on the same issue, but with a specific example.

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