在使用new操作符来调用一个构造函数的时候,发生了什么呢?其实很简单,就发生了四件事:
var obj ={};
obj.__proto__ = CO.prototype;
CO.call(obj);
return obj;
第一行,创建一个空对象obj。
第二行,将这个空对象的__proto__成员指向了构造函数对象的prototype成员对象,这是最关键的一步,具体细节将在下文描述。
第三行,将构造函数的作用域赋给新对象,因此CO函数中的this指向新对象obj,然后再调用CO函数。
第四行,返回新对象obj。当构造函数里包含返回语句时情况比较特殊,这种情况会在下文中说到。
这4步正确描述了new 一个 构造函数的完整过程,大致阐述了底层原理。结合自己的探索,验证如下:
造一个构造函数,起初也是因为对this的疑惑,在构造函数中加入了log来验证this的变化
function