天天看点

js中new操作符到底干了什么?

先看一个例子:

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