new的本质

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容