如何在JavaScript中继承并将新原型成员指定为单个对象?

时间:2014-04-20 18:55:12

标签: javascript inheritance prototypal-inheritance

我不喜欢以下内容,因为它多次重复Child.prototype

function Parent(a)
{
  this.a = a;
}

function Child(a, b)
{
  Parent.call(this, a);
  this.b = b;
}

Child.prototype = Object.create(Parent.prototype);

Child.prototype.constructor = Child;
Child.prototype.childValue = 456;
Child.prototype.anotherChildValue = 457;
Child.prototype.yetAnotherValue = 458;
Child.prototype.IHateToWriteChildPrototypeEachTime = 459;
// ...gazillion more Child.prototype.xxx

我希望以下方式指定新成员:

{
  constructor: Child,
  childValue: 456,
  anotherChildValue: 457,
  yetAnotherValue: 458,
  ILoveThisSinceItsSoTerse: 459,
  // ...gazillion more
}

有没有一种漂亮,干净,高效的方法,而不需要创建辅助功能并重新发明轮子?

1 个答案:

答案 0 :(得分:0)

你可以制作一个非常简单的extend函数来做你想做的事情:

var extend = function(obj, methods) {
  for(var key in methods) {
    if(methods.hasOwnProperty(key)) {
      obj[key] = methods[key];
    }
  }
}

然后你可以说:

extend(Child.prototype, {
  constructor: Child,
  foo: function() { }
});