手写new

Posted 饮尽杯中月

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了手写new相关的知识,希望对你有一定的参考价值。

过程

在这里插入图片描述

实现

当未使用new创建对象时

this指向window
在这里插入图片描述
在这里插入图片描述

当使用new时

会传入构造函数和参数,传入的参数为伪数组,需要转为真数组
在这里插入图片描述
伪数组agrument调用Array原型上的slice方法,传入0是返回原真数组args
在这里插入图片描述
返回的为第一个参数构造函数Person
在这里插入图片描述
使得this指向空对象content,且传入args参数
在这里插入图片描述
此时如果return content, 会发现content的_proto_指向有问题
在这里插入图片描述
使用原生的new时 _proto_指向就没有问题
在这里插入图片描述
所以
在这里插入图片描述
完整版
在这里插入图片描述

以上是关于手写new的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript手撕前端面试题:手写new操作符 | 手写Object.freeze

手写new

JS手写New操作符

new一个对象的过程是什么,手写代码表示

手写new

无敌秘籍之 — JavaScript手写代码