【发布时间】:2015-03-19 20:50:17
【问题描述】:
我想创建一个以对象为原型的构造函数。
例如:
var constructor=function(){
this.foo=bar;
}
var constructorProto={
method:function(){}
}
constructor.__proto__=constructorProto;
constructor.method();
new constructor;
功能演示:http://jsfiddle.net/juwt5o97/
这允许我在调用new 之前传递构造函数并对其进行修改。但是,我不想使用__proto__ 或Object.setPrototypeOf()。有没有“正确”的方式来做到这一点?
【问题讨论】:
-
为什么你认为
Object.setPrototypeOf()不“合适”? -
prototypes 不是静态方法,所以它会混淆你想要什么......你可以直接说
constructor.method=constructorProto.method;,或者使用 Extend 或 Object.create() 来复制。 -
我记得在某处读过它不应该使用它,也许我把它与
__proto__混淆了。无论如何,它是 ES6,如果有适用于 ES5 的方法,我更愿意。 -
“我记得在某处读到它不应该被使用……” 我想你可能没有抓住重点。他们可能不是说不应该使用这种改变原型的特殊方式。他们可能会说你根本不应该改变它。
-
@dandavis 构造函数可能会创建多次,所以我不想为每个构造函数重新创建方法。
标签: javascript oop prototype