web前端入门到实战:JS中new操作符源码实现

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

new的四步操作:

1. 创建一个空对象
2. 设置空对象的 proto 属性继承构造函数的prototype属性,也就是继承构造函数的原型对象上的公有属性和方法
3. 调用构造函数,将构造函数中的this替换为空对象的this,继承构造函数中的属性
4. 在函数内部返回一个新对象


web前端开发学习Q-q-u-n: 784783012 ,分享开发工具,零基础,进阶视频教程,希望新手少走弯路

源码实现


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}

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69901074/viewspace-2652947/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/69901074/viewspace-2652947/

你可能感兴趣的:(web前端入门到实战:JS中new操作符源码实现)