详细讲解new一个对象的过程,含详细constructor, __proto__, prototype 关系图

new对象:web

function Person(name, age) {
  this.name = name;
  this.age = age;
 
var person = new Person("anla", 23);
}

new一个对象的四个过程:svg

一、建立一个空对象函数

var obj = new Object();

二、让Person中的this指向obj,并执行Person的函数体this

Person.call(obj);

三、设置原型链,将obj的__proto__成员指向了Person函数对象的prototype成员对象.net

obj.__proto__ = Person.prototype;

四、 将初始化完毕的新对象地址,保存到等号左边的变量中prototype

var person = obj;

详细的constructor, proto, prototype 关系图:
在这里插入图片描述code

图片转载自:http://www.javashuo.com/article/p-bgvrhzjz-dy.htmlxml