返回介绍

模拟 new 运算符

发布于 2024-09-07 20:34:42 字数 733 浏览 0 评论 0 收藏 0

new 运算符 创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例。

原理

  • 新建一个空对象
  • 链接到原型
  • 绑定 this
  • 返回该对象

代码实现

function myNew() {
  // 1.新建一个空对象
  let obj = {}
  // 2.获得构造函数
  let con = [].shift.call(arguments)
  // 3.链接原型,实例的 __proto__ 属性指向构造函数的 prototype
  obj.__proto__ = con.prototype
  // 4.绑定 this,执行构造函数
  let res = con.apply(obj, arguments)
  // 5.返回新对象
  return typeof res === 'object' ? res : obj
}

function Person(name) {
  this.name = name
}
let person = myNew(Person,'nanjiu')
console.log(person) //{name: "nanjiu"}
console.log(typeof person === 'object') //true
console.log(person instanceof Person) // true

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文