我有一个看起来像这样的对象:
var myObj = {
_fooCon: function(f) {
if (typeof f != 'function') throw new TypeError('Bad Foo');
this.fn = f;
},
_barCon: function(f) {
if (typeof f != 'function') throw new TypeError('Bad Bar');
this.fn = f;
},
someFoo: function(v) {
return new this._fooCon(function(x) {
return x + ' Foo ' + v;
});
},
someBar: function(v) {
return new this._barCon(function(x) {
return x + ' Bar ' + v;
});
}
};
这样做的原因是我可以instanceof
高效地使用(即,我可以区分在不同场景中使用的两个对象,尽管它们在结构上是相同的)。someFoo
(忽略和someBar
相似的事实!)
有没有办法可以抽象构造函数,所以如果我需要创建,比如说,_bazCon
我不需要重复自己;或者,如果有错误,我不必修复每个构造函数定义?
我试着做一个工厂成员,像这样:
_factory: function(type, f) {
if (typeof f != 'function') throw new TypeError('Bad ' + type);
this.fn = f;
}
...然后:
_fooCon: function(f) { return new this._factory('Foo', f); }
即使不尝试这个,我也可以看到它不起作用!关于如何实现我正在寻找的任何想法?