new 的过程

181 阅读1分钟

new 的过程

1、创建一个新的空对象。(即实例对象)

obj = {}

2 、设 置 原 型 链

将新对象obj的 __proto__属性指向构造函数的prototype 对象。(即所有实例对象通过__proto__可 以访问原型对象。构造函数的原型被其所有实例对象共享。)

obj.__proto__= Person.prototype

3 、将构造函数的thi s改指向新对象obj并 执行函数代码。

var result = Person.call(obj,...rest)

4 、如果构造函数中没有人为返回一个对象 类型的值,则返回这个新对象obj。否则直 接返回那个对象类型值。(一般定义的构造 函数中不写返回值。)

image.png

下面这个兄弟写的好,还讲了一下原型链
https://wenku.baidu.com/view/0e8662636aeae009581b6bd97f1922791688befe.html