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赋值
- 返回新对象