先看一个例子:
function Person() {
this.name = 'Andy';
this.age = 20;
this.say = function () {
console.log('hello everybody');
}
}
Person.prototype.test = function(){
console.log('test');
};
let p1 = new Person();
console.log(p1.name);//'Andy'
console.log(p1.age);//20
p1.say();//'hello everybody'
p1.test();//'test'
new操作符的作用如下:
1.创建一个空对象
2.由this变量引用该对象
3.该对象继承该函数的原型
4.把属性和方法加入到this引用的对象中
5.新创建的对象由this引用,最后隐式地返回this。
过程如下:
let obj = {};//创建一个空对象
obj.__proto__ = Person.prototype;//该对象继承该函数的原型
Person.call(obj);//隐式地返回this