前提:我正在尝试放弃构造函数模式
正如你在console.log()
这里看到的
//Constructor pattern
function F(){}
F.prototype.foo = null;
console.log(new F());
//Object create pattern
var FPrototype = {};
FPrototype.foo = null;
console.log(Object.create(FPrototype))
Object.create
API创建的对象具有__proto__
引用原型的属性,Object
而构造函数创建的对象具有引用原型的属性作为__proto__
构造函数的名称。
我想这种行为是试图模拟强类型语言,假设您的构造函数定义了一个由构造函数名称本身标识的新类型。
也就是说,当我的原型链增长时,我发现通过名称/“类型”识别不同的原型非常有用,那么有什么方法可以正确地使用它Object.create
而不是构造函数?