function _new(fn,...arg){
let obj = {};//先生成一个新对象
obj.__proto__ = fn.prototype;//修改新对象的原型对象
let result = fn.apply(obj,arg);//将this指向新对象
return typeof result === "object" && result !== null ? result : obj
}
function _new(){
let args = [].slice.call(arguments);//获取所有参数
let constructor = args.shift();
let context = Object.create(constructor.prototype)
let result = constructor.apply(context,args)
return typeof result === 'object' && result !== null ? result : context
}
这段代码定义了两个函数,用于模拟JavaScript中的构造函数行为。它们创建新对象,设置新对象的原型为指定函数的prototype,然后使用apply方法调用构造函数,确保this指向新对象。如果构造函数返回的是一个对象,那么返回这个对象,否则返回新创建的对象。
3万+

被折叠的 条评论
为什么被折叠?



