![](/img/trans.png)
[英]JavaScript: How to create a new instance of a class without using the new keyword?
[英]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.