function a(){json
this.b = 12;函數
this.c = 'ly';this
}prototype
var obj1 = new a();對象
var obj2 = new a;//建立對象時能夠不加()原型
var obj3 ={};io
a.call(obj3);console
console.log(obj1.b); //12function
console.log(obj2.b); //12構造函數
console.log(obj3.b); //12
能夠看到new和json方式結合call函數建立對象都具備一樣的效果。
其實new建立對象,分爲三步,第一步先由new來建立一個空對象,第二部將對象內置的原型對象設置爲構造器prototype所引用的那個對象,第三步將對象做爲this來調用構造函數。