画尸师

文章 评论 浏览 27

画尸师 2022-05-04 13:57:39

new 都做了什么?
1、创建一个新的实例对象
2、将this指向新的实例对象
3、新对象的__proto__属性指向构造函数的原型对象
4、返回值
第一种实现:

function _new(Func, ...args){
  let obj = {}
  obj.__proto__ = Func.prototype
  let result = Func.call(obj, ...args)
 return (result!== null && /^(object)|(function)$/.test(typeof result)) ? result : obj
}

第二种实现:

function _new(Func, ...args){
 let obj = Object.create(Func.prototype)
 let result = Func.call(obj, ...args)
return (result!== null && /^(object)|(function)$/.test(typeof result)) ? result : obj
}

第 14 题:情人节福利题,如何实现一个 new

画尸师 2022-05-03 22:50:56

循环次数少的放在外层,减少内层变量的操作(初始化,比较,自增等)次数吧。

第 120 题:为什么 for 循环嵌套顺序会影响性能?

更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文