function a(){
this.b = 12;
this.c = 'ly';
}
var obj1 = new a();
var obj2 = new a;//创建对象时可以不加()
var obj3 ={};
a.call(obj3);
console.log(obj1.b); //12
console.log(obj2.b); //12
console.log(obj3.b); //12
可以看到new和json方式结合call函数创建对象都具有同样的效果。
其实new创建对象,分为三步,第一步先由new来创建一个空对象,第二部将对象内置的原型对象设置为构造器prototype所引用的那个对象,第三步将对象作为this来调用构造函数。