function newObject() {
let obj = {}
let Ctor = arguments[0]
let args = [...arguments].slice(1)
obj.__proto__ = Ctor.prototype
obj.__proto__.constructor = Ctor
let rec = Ctor.apply(obj, args)
return typeof rec === 'object' ? rec : obj
}
// demo
function Dog(name, color, age) {
this.name = name;
this.color = color;
this.age = age;
}
Dog.prototype={
getName: function() {
return this.name
}
}
var dog = newObject(Dog, '二黑', '白色', 5)
console.log(dog)
console.log(Dog)