首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JS中new操作符源码实现

JS中new操作符源码实现

作者头像
TimothyJia
发布2019-11-12 12:42:29
2.2K0
发布2019-11-12 12:42:29
举报

首先我们来看一下实例化一个对象做了浏览器做了什么事情

new的四步操作:

1. 创建一个空对象

2. 设置空对象的__proto__属性继承构造函数的prototype属性,也就是继承构造函数的原型对象上的公有属性和方法

3. 调用构造函数,将构造函数中的this替换为空对象的this,继承构造函数中的属性

4. 在函数内部返回一个新对象

源码实现

function myNew (fun) {
  return function () {
    // 创建一个新对象且将其隐式原型指向构造函数原型
    let obj = {
      __proto__ : fun.prototype
    }
    // 执行构造函数
    fun.call(obj, ...arguments)
    // 返回该对象
    return obj
  }
}

function person(name, age) {
  this.name = name
  this.age = age
}
let obj = myNew(person)('chen', 18) // {name: "chen", age: 18}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-08-02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档