new的本质

2019-06-27  本文已影响0人  LinkVoid

new运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例。

我们看一下new到底做了什么。

1.创建一个空的JavaScript对象test(即{});

创建对象

2.链接到原型,将 新对象test的 _proto_ 指向 Test 的 prototype

我们使用构造函数生成的function,所有的属性和方法是共享的,他会自动添加一个prototype方法。

这个过程我们可以理解为test._proto_就是一个地址,用来连接到构造函数的prototype对象

test._proto_ = Test.prototype

3.我们将this指向test对象,为test添加属性和方法。并返回新对象。

Test.call(test);

return test

明白了原理,其实我们就可以自己手写一个new。

_New
上一篇下一篇

猜你喜欢

热点阅读