JavaScript手写new操作符
前言
想要实现new操作符,首先得知道new操作符干了哪些事情:
第一步
第一、new操作符会创建一个对象并返回,且此对象的__proto__
等于此函数的原型prototype
(这里需要注意__proto__
和prototype
的区别和联系,原型prototype
是函数才有的,务必记住,而__proto__
可以理解为对象的某个属性,此属性指向对象的构造函数的prototype,是不是很绕。举个例子);
比如,new函数A创建了对象a,则a.__proto__ = A.prototype
,代码如下:
1 | function A(age) { |
第二步
第二、函数体中的this指向new操作符所创建的对象;
第三步
第三、如果此函数的返回值为对象,则函数的返回值则为函数体中所写的返回值,否则new操作符则创建一个对象并返回;
弄清楚了这三件事,下面就可以入手开始实现自己的new了:
1 | function myNew(fn, ...args) { |
有更好的写法,欢迎指出。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 webRambler-blog!
评论