function createObj() {var obj={};var Constructor=[].shift.call(arguments);//获得构造函数obj.__proto__=Constructor.prototype;//链接到原型链var res=Constructor.apply(obj,arguments);//这里第一个参数已经shift了,剩下的都是创建对象所需要的参数return (typeof res==='object')?res:obj;
}
- 创建一个新对象
- 链接到原型,他的_proto_指向他构造函数的prototype
- this指向这个新对象,调用构造函数对this赋值
- 返回新对象