169

JS オブジェクトを作成する方法はたくさん知っていますが、その方法は知りませんでしたObject.create(null)

質問:

それはまったく同じですか:

var p = {}

var p2 = Object.create(null);

?

4

5 に答える 5

225

それらは同等ではありません。{}.constructor.prototype == Object.prototypewhileObject.create(null)は何も継承しないため、プロパティはまったくありません。

つまり、javascript オブジェクトは、明示的に null をプロトタイプとして作成しない限り、デフォルトで Object から継承されますObject.create(null)

{}代わりに と同等Object.create(Object.prototype)です。


Object.create(null)Chrome Devtool では、プロパティがなく、__proto__プロパティがあることがわかります{}

ここに画像の説明を入力

于 2013-03-20T08:37:19.000 に答える
0

Object.create(null) を使用してオブジェクトを作成すると、プロトタイプのないオブジェクトを作成していることになります。ここでのnullは、プロトタイプ チェーンの終わりを意味します。それでも、{} のようなオブジェクトを作成すると、オブジェクト プロトタイプが追加されます。したがって、これらは 2 つの異なるオブジェクトであり、一方にはプロトタイプがあり、もう一方にはプロトタイプがありません。

于 2020-05-27T04:12:03.533 に答える