之前学习js的时候似乎没有发现用构造方法构建对象时使用new关键字和不使用new关键字会有差别,是不是我学习的时候太粗心了呀/该打,直到自己踩了坑才发现这个问题,为了避免更多人踩坑,我还是再给大家重新复习一遍吧。
当不用关键字new生成对象时调用的是普通方法,返回的始终是windows对象,也就是第一次生成的对象和第二次生成地址指向的是同一个.
如:
function objCreate(a,b){
this.a = a;
this.b = b;
return this;
}
let obj1 = objCreate(1,2);
let obj2 = objCreate(3,4);
console.log(obj1 === obj2);
console.log(obj1);
console.log(obj1.a,obj1.b);
console.log(obj2.a,obj1.b);
打印结果为:
true
windows
3 4
3 4
当使用关键字生成对象时生成的对象就不是同一个了。
代码如下:
function objCreate(a,b){
this.a = a;
this.b = b;