new到底做了什么

在Javscript中,我们实例化一个类的时候都会使用类似的代码

1
var coder = new Man()

那么在new的时候,new到底做了什么呢,其实很简单,new的作用,就是先创建一个空对象,然后将新对象的proto链接到类的prototype,最后通过将新对象作为上下文(this),调用call来执行类的构造函数。实现代码如下

1
2
3
var coder = {};
coder.__proto__ = Man.prototype
Man.call(coder)

具体可以查看MDN的文档new运算符