There's a difference here, with Object.create you can create an object that doesn't inherit from anything, Object.create(null);, on the other hand, if you set SomeConstructor.prototype = null; the newly created object will inherit from Object.prototype.
function objectFactory() {
var args = Array.prototype.slice.call(arguments);
var Constructor = args.shift();
var instance = Object.create(Constructor.prototype);
var temp = Constructor.apply(instance, args);
工厂模式
缺点: 不能知道通过工厂产生的对象的类型。
构造函数
对比不同之处
new Object()
this
return
语句使用构造函数创建 => 使用
new
操作符,实际上是经历了抛砖引玉实现一个new
new
Object.create()
Object.create()
使用null的时候代表从Object的原型上直接继承
return (typeof temp === 'object' && temp !== null) ? temp : instance; }