使用new关键字调用函数(new ClassA(…))的具体步骤:
1. 创建空对象{}
2. 使用新对象,调用函数,函数中的this被指向新实例对象:
{}.构造函数();
3. 设置新对象的constructor属性为构造函数的名称,设置新对象的__proto__属性指向构造函数的prototype对象
4. 将初始化完毕的新对象地址,保存到等号左边的变量中
注意:若构造函数中没有返回值或返回值是基本类型(Number、String、Boolean)的值,则返回新实例对象;若返回值是引用类型的值,则实际返回值为这个引用类型。
var foo = "bar"; function test () { this.foo = "foo"; } new test(); //test中的this指新对象,并未改变全局的foo属性 console.log(this.foo); // "bar" console.log(new testThis().foo); // "foo";new和属性访问.运算符优先级相通,从左往右执行
以上皆为个人理解,如有错误之处,欢迎留言指正。