//模拟new的实现
function Animal(type) {
this.type = type //实例上的属性
//如果当前构造函数返回的是一个引用类型,需要把这个对象返回
//return {name: 'jeffywin'}
}
Animal.prototype.say = function() {//原型上添加公共属性和方法
console.log('say')
}
//let animal = new Animal('爬行动物')
function newMy(){
let Constructor = [].shift.call(arguments)//剩余的arguments就是其他参数
let obj = {}
obj.__proto__ = Constructor.prototype
let r = Constructor.apply(obj,arguments)
return r instanceof Object ? r : obj
}
let animal = newMy(Animal,'爬行动物')
animal.say()
复制代码
模拟new实现
最新推荐文章于 2024-04-07 10:51:39 发布