在Javascript中设置没有__proto__的函数的原型

时间:2015-03-19 20:50:18

标签: javascript oop prototype

我想创建一个以对象为原型的构造函数。

例如:

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()。这样做是否有“正确”的方式?

1 个答案:

答案 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();