JavaScript深入之new的模擬實現
阿新 • • 發佈:2021-07-20
廢話不多說,直接上程式碼:
function objectFactory() {
var obj = new Object(),
Constructor = [].shift.call(arguments);
obj.__proto__ = Constructor.prototype;
var ret = Constructor.apply(obj, arguments);
return typeof ret === 'object' ? ret : obj;
};
測試一下:
unction Person(name,age){ this.name = name this.age = age } Person.prototype.drink = 'cool' function factory(){ var obj = new Object() Constructor = [].shift.call(arguments) obj.__proto__ = Constructor.prototype var ret = Constructor.apply(obj,arguments) return typeof ret === 'object'?ret:obj } var person = factory(Person,'xiaohong',43) console.log(person.name) console.log(person.age)
結果: