我有一个继承自另一个的类。在基类中,我想知道是否可以创建并返回调用父类的新实例。
以下是一个例子:
基
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继承的所有类,它需要做的事情是相同的。我不希望用样板来混乱我的类来创建自己的新实例。
这可能吗?我怎样才能实现这样的目标?
答案 0 :(得分:1)
假设FooThing.prototype.constructor == FooThing
,您可以使用
ThingBase.prototype.mapper = function(data) {
return new this.constructor(crunch(data));
};
所有其他解决方案将“使用样板[代码] ”混乱[你的]类,是的,但是它们不依赖于correctly set constructor
property。