我的理解:web
new一個對象的時候,是在對象內建立一個this=this,而且return這個this;app
shou=function(name, qq){函數
//let this=new Object(); //new的時候系統自動this
this.name=name;spa
//return this; //new的時候系統自動prototype
}code
let ar1=new shou('blue','32423534');orm
alert(ar1.name) //blue對象
摘要 blog
var a=new F()
這個時候,a就是F的一個實例,注意不要跟繼承搞混淆了,這是實例化。此時new有三個做用
1.在構造函數內部聲明一個臨時對象this
2.在構造函數F中默認返回這個臨時對象this,賦給a
3.將臨時對象的_proto_指向F的prototype
用更生動的能夠看下圖
只要你在士兵前面使用 new 關鍵字,那麼能夠少作四件事情:
1. 不用建立臨時對象,由於 new 會幫你作(你使用「this」就能夠訪問到臨時對象);
2. 不用綁定原型,由於 new 會幫你作(new 爲了知道原型在哪,因此指定原型的名字爲 prototype);
3. 不用 return 臨時對象,由於 new 會幫你作;
4. 不要給原型想名字了,由於 new 指定名字爲 prototype。
var 士兵們 = [ ] ;
for(var i=0; i<100; i++){
士兵們.push(new 士兵(i))
}
兵營.批量製造(士兵們)
更全可看:https://zhuanlan.zhihu.com/p/23987456?refer=study-fe