JS中newとObject.creat()の違い
1982 ワード
new操作子
まずnew操作子を見に行きます.
Object.create
まずObject.createの文法を見ます. protoは原型オブジェクト である. propertiesObjectは、属性の構成 である.
まとめ: newオペレータは、そのようなコンストラクタのプロトタイプで指定されたプロトタイプのオブジェクトを新しいオブジェクトの「Prottype」 に割り当てます. Object.creatは、パラメータprotoが指定したプロトタイプオブジェクトを新しいオブジェクトの[Prottype]に割り当てます. パラメータがnullであれば、Object.creatは空のオブジェクトを作成します.特に、Object.creat(null)とnew Object()の違いを指摘する必要があります.どちらも空のオブジェクトを作成しますが、newが作成した空のオブジェクトはObjectのプロトタイプのオブジェクトをバインドしますが、Object.create(null)の空のオブジェクトは属性がありません.
まずnew操作子を見に行きます.
function Animal(){}
var animal = new Animal();
プロトタイプチェーンを熟知すれば、newオペレータが実行時にアニマル.プロトタイプに値を付与することが分かります.Object.create
まずObject.createの文法を見ます.
Object.create(proto, [ propertiesObject ])
その中:function Animal(name){
this.name = name;
}
var animal = new Animal("test");
var createAnimal1 = Object.create(Animal.prototype);
var createAnimal2 = Object.create(animal);
var createAnimal3 = Object.create(null);
console.log(createAnimal1.name) // undefined
console.log(createAnimal2.name) // test
console.log(createAnimal3) // {}
つまり、オブジェクトの原型オブジェクトを任意に指定することができます.まとめ: