JS オブジェクトを作成する方法はたくさん知っていますが、その方法は知りませんでしたObject.create(null)
。
質問:
それはまったく同じですか:
var p = {}
対
var p2 = Object.create(null);
?
JS オブジェクトを作成する方法はたくさん知っていますが、その方法は知りませんでしたObject.create(null)
。
質問:
それはまったく同じですか:
var p = {}
対
var p2 = Object.create(null);
?
それらは同等ではありません。{}.constructor.prototype == Object.prototype
whileObject.create(null)
は何も継承しないため、プロパティはまったくありません。
つまり、javascript オブジェクトは、明示的に null をプロトタイプとして作成しない限り、デフォルトで Object から継承されますObject.create(null)
。
{}
代わりに と同等Object.create(Object.prototype)
です。
Object.create(null)
Chrome Devtool では、プロパティがなく、__proto__
プロパティがあることがわかります{}
。
Object.create(null) を使用してオブジェクトを作成すると、プロトタイプのないオブジェクトを作成していることになります。ここでのnullは、プロトタイプ チェーンの終わりを意味します。それでも、{} のようなオブジェクトを作成すると、オブジェクト プロトタイプが追加されます。したがって、これらは 2 つの異なるオブジェクトであり、一方にはプロトタイプがあり、もう一方にはプロトタイプがありません。