new 过程都发生了什么?(手写函数模拟new过程)
·
function Person(name){
this.name = name
}
Person.prototype.say=function(){
console.log('我的名字'+this.name)
}
const person1 = new Person('xiaoming')
person1.say()
模拟new 实现(手动实现New过程)
function myNew(Fn,...args){
//1.创建一个空对象
const obj = {}
//2.将新对象的__proto__属性设置为Fn.prototype构造函数的原型
obj.__proto__ = Fn.prototype
//3. 修改this指向为新对象
const res = Fn.apply(obj,args)
//4.将函数得结果返回
return typeeof res ==='object'?res:{}
}
const person1 = myNew(Person,'xiaoming')
person1.say()
总结:
new 过程都发生了什么?
- 创建一个空对象
- 将新对象的__proto__属性设置为Fn.prototype构造函数的原型
- 修改this指向为新对象
- 将函数得结果返回
openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐


所有评论(0)