如何在javascript中创建父类的新实例

时间:2014-01-30 01:51:59

标签: javascript

我有一个继承自另一个的类。在基类中,我想知道是否可以创建并返回调用父类的新实例。

以下是一个例子:

var util = require('util');

var ThingBase = function(options) {
}

ThingBase.prototype.mapper = function(data) {
  // do a bunch of stuff with data and then
  // return new instance of parent class
};

父:

var FooThing = function(options) {
  ThingBase.call(this, options);
};

util.inherits(FooThing, ThingBase);

FooThing.someMethod = function() {
  var data = 'some data';
  var newFooThing = this.mapper(data); // should return new FooThing instance
};

我之所以不想从someMethod创建一个新实例的原因是我希望mapper在返回实例之前对数据做一堆事情。对于从Base继承的所有类,它需要做的事情是相同的。我不希望用样板来混乱我的类来创建自己的新实例。

这可能吗?我怎样才能实现这样的目标?

1 个答案:

答案 0 :(得分:1)

假设FooThing.prototype.constructor == FooThing,您可以使用

ThingBase.prototype.mapper = function(data) {
  return new this.constructor(crunch(data));
};

所有其他解决方案将“使用样板[代码] ”混乱[你的]类,是的,但是它们不依赖于correctly set constructor property