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来调用构造函数。