题解 | #实现new操作符#

实现new操作符

http://www.nowcoder.com/practice/71c2aff7cb6641099aa17d56157a91b9

13_new

本题考点:原型链

根据题目要求,实现一个仿new功能的新"_new"函数,该函数会返回一个对象,该对象的构造函数为函数参数、原型对象为函数参数的原型,核心步骤有:

  1. 创建一个新对象
  2. 获取函数参数
  3. 将新对象的原型对象和函数参数的原型连接起来
  4. 将新对象和参数传给构造器执行
  5. 如果构造器返回的不是对象,那么就返回第一个新对象

参考答案

const _new = function() {
    const object1 = {}
    const Fn = [...arguments].shift()
    object1.__proto__ = Fn.prototype
    const object2 = Fn.apply(object1, arguments)
    return object2 instanceof Object ? object2 : object1
}

全部评论
最后一句:return object2 instanceof Object ? object2 : object1 请问他在什么情况下不是对象呢?
3 回复 分享
发布于 2021-12-18 23:29
构造函数返回简单数据类型吧?
点赞 回复 分享
发布于 2023-09-10 11:12 湖南

相关推荐

04-27 08:59
常州大学 Java
牛客139242382号:《两门以上汇编语言》
点赞 评论 收藏
分享
吴offer选手:HR:我KPI到手了就行,合不合适关我什么事
点赞 评论 收藏
分享
评论
8
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务