第一种方法
function myNew (constructor, ...args) {
let targe = {}
targe.__proto__ = constructor.prototype
const Res = constructor.apply(targe, args)
if (Res instanceof Object) return Res
return targe
}
function Person (name) {
this.name = name || '名字'
}
Person.prototype.sayName = function () {
console.log('sayName --->', this.name)
}
let p = myNew(Person, '小明')
p.sayName()
第二种方法
function create () {
let obj = new Object()
const Func = [].shift.call(arguments)
obj.__proto__ = Func.prototype
const Res = Func.apply(obj, arguments)
return Res instanceof Object ? Res : obj
}