什么是 new?
new 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象类型之一
手动实现
// 第二版的代码
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; // 返回这个对象
}
使用
function Otaku () {
……
}
// 使用 new
var person = new Otaku(……);
// 使用 objectFactory
var person = objectFactory(Otaku, ……)