new的原理

先来个构造函数的例子:

function  Prince(name,age){

this.name=name;
this.age=age;
}

var prince=new Prince("charming",25);

使用new关键字实例化的时候发生了什么?

var prince=new Prince("charming",25);
1.第一步,创建一个空对象。
var prince={}
2.第二步,将构造函数Prince()中的this指向新创建的对象prince。
3.第三步,将prince的_proto_属性指向Prince函数的prototype,创建对象和原型间关系
4.第四步,执行构造函数Prince()内的代码。

附上部分说明:每个函数function都有一个prototype,即原型。同时,每个对象都有一个_proto_,可成为隐式原型。

并且每个对象都有一个_proto_属性,指向创建该对象的函数的prototype。

原文地址:https://www.cnblogs.com/Yirannnnnn/p/4899329.html