- 首先创建一个新的空对象
- 让对象的原型__proto__=构造函数的prototype属性
- 让函数的this指向这个对象,执行构造函数中的代码
- 判断函数返回值的类型。如果是值类型,返回新创建的对象;如果是引用类型,返回这个引用类型的对象
function objectFactory(){
let newObject = null;
let constructor = Array.prototype.shift.call(arguments)
if(typeof constructor !== 'function'){
console.error("type error");
return;
}
newObject = Object.create(constructor.prototype);
let result=constructor.apply(newObject,arguments);
let flag = result && (typeof result === 'object' || typeof result === 'function');
return flag? result:newObject;
}
objectFactory(构造函数,初始化参数);