当你使用new的时候,会:
1.创建一个新的空对象;
2.将this绑定到该对象;
3.添加一个名为__proto__的新属性,并且指向构造函数的原型(prototype);
4.返回该this对象。
如果你没有特别理解,那么我们接下来用例子来详细解释。首先定义一个构造函数Student,该函数接收两个参数name和age。
~~~
function Student(name, age){
this.name = name;
this.age = age;
}
~~~
现在我们使用new来创建一个新的对象:
~~~
var first = new Student('John', 26);
~~~
到底发生了什么呢?
1.一个新的对象创建,我们叫它obj;
2.this绑定到obj,任何对this的引用就是对obj的引用;
3.__proto__属性被添加到obj对象。obj.__proto__会指向Student.prototype;
4.该obj对象被赋值给first变量。
我们可以通过打印测试:
~~~
console.log(first.name);
// John
console.log(first.age);
// 26
~~~