你知道new操作符是如何实现的吗
# 是什么
new: js关键字, 用来创建指定构造函数的实例
function Foo(name){
this.name = name
}
Foo.prototype.sayName = function(){
console.log(this.name)
}
let f1 = new Foo('f1')
console.log(f1.name) // f1
f1.sayName() // f1
# 特性
- 能够访问构造函数属性
- 能够访问构造函数原型链
# 原理
function myNew(fn){
let obj = {}
obj.__proto__ = fn.prototype
const args = [...arguments].slice(1)
const result = fn.call(obj, ...args)
return result instanceof Object ? result : obj
}
上次更新: 2021/12/19, 18:05:42