簡體   English   中英

如何在JavaScript中創建父類的新實例

[英]How to create new instance of parent class in 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的類,它將需要做的事情都是相同的。 我不想用樣板混亂我的班級來創建自己的新實例。

這可能嗎? 我該如何實現這樣的目標?

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

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

所有其他解決方案都會“ 用樣板代碼[[]]弄亂[您的]類 ”,是的,但是它們不依賴於正確設置的constructor屬性

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM