我想创建一个以对象为原型的构造函数。
例如:
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()
。这样做是否有“正确”的方式?
答案 0 :(得分:1)
如果要扩展第一个类的原型(以便实例继承方法),可以使用Object.create
来完成:
var ClassA=function(){
this.foo='bar';
}
var protoObject = {
method:function(){alert('t');}
}
ClassA.prototype = Object.create(protoObject);
new ClassA().method();
如果您只想将静态函数附加到第一个函数,那么您可以这样做:
for (var property in protoObject) {
if (typeof protoObject[property] == 'function') {
ClassA[property] = protoObject[property];
}
}
ClassA.method();