{} vs object.create() – オブジェクトの初期化の違い

JavaScriptでオブジェクトを生成するときに

let a = {};

と初期化する場合があるかと思います。

この時、{}で初期化したオブジェクトは完全な空オブジェクトではありません。

実際には「Object.prototypeの__proto__ プロパティ」が入っています。

なので、場合によってはObject.prototypeの既定のキーと自分のキーが衝突する可能性があります。

完全な空オブジェクトを生成するには?

完全な空オブジェクトを生成するには、Object.create()を使います。

引数に”null”を指定することで、完全な空オブジェクトが生成されます。

 

ちなみにですが、Object.create(Object.prototype)はと同じになります。

Related Posts