函数"/>
手写new函数
一. new 基础
- JS内部首先会先生成一个对象;
- 使空对象的隐式原型指向构造函数的显式原型;
- 把函数中的this指向该对象并执行构造函数中的语句;
- 返回该对象实例。
二. 手写代码
function myNew(fn, ...args) {let obj = {} // 1.JS内部首先会先生成一个对象obj.__proto__ = fn.prototype // 2.使空对象的隐式原型指向构造函数的显式原型let res = fn.apply(obj, args) // 3.把函数中的this指向该对象并执行构造函数中的语句return res instanceof Object ? res : obj // 4.返回该对象实例
}
1. myNew函数的return
如果return了一个基础数据类型或者空,那么new函数得到的是一个对象,为obj
如果return返回了一个函数或者对象等引用类型,那么new函数得到的是myNew的返回值
更多推荐
手写new函数
发布评论