题解 | #实现new操作符#
实现new操作符
https://www.nowcoder.com/practice/71c2aff7cb6641099aa17d56157a91b9
当实现类似 new
操作符的功能时,我们需要考虑以下步骤:
- 创建一个新的空对象。
- 将这个空对象的原型链指向构造函数的原型对象。
- 执行构造函数,将空对象绑定为构造函数的
this
上下文,并传入参数。 - 如果构造函数有返回值且返回值是对象,则返回该对象;否则,返回创建的新对象。
所以我们写出以下题解:
首先创建一个新的空对象,然后把空对象的原型链指向构造函数的原型对象,随后执行构造函数,并将空对象绑定为构造函数的this上下文,并用 apply 传入参数。最后判断构造函数的返回值类型,返回对象类型的返回值或者创建的新对象。
const _new = function(Constructor,...args) { // 补全代码 const obj = {} obj.__proto__ = Constructor.prototype; const result = Constructor.apply(obj,args) return result instanceof Object ? result : obj }
手撕题题库 文章被收录于专栏
这是我开卷的第一步!!