2013-07-18 6 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メソッド)、これらの追加の詳細をデフォルトから変更することができます。

関連する問題