JS中new操作符源码实现

Posted jiajialove

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS中new操作符源码实现相关的知识,希望对你有一定的参考价值。

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

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

  

以上是关于JS中new操作符源码实现的主要内容,如果未能解决你的问题,请参考以下文章

JS-JS模拟实现Promise-源码解析

dpdk源码分析:交互式命令行的实现 初始化与退出

dpdk源码分析:交互式命令行的实现 初始化与退出

dpdk源码分析:交互式命令行的实现 初始化与退出

jquery源码阅读笔记一

Vue.js 源码实现