node-binary二进制解析器使用以下模式构建其对象:
exports.parse = function parse (buffer) {
var self = {...}
self.tap = function (cb) {...};
self.into = function (key, cb) {...};
...
return self;
};
我如何继承我自己的、开明的解析器?这种模式是故意设计的让继承变得尴尬吗?
迄今为止,我唯一成功尝试继承的所有方法binary.parse(<something>)
是_.extend
用作:
var clever_parser = function(buffer) {
if (this instanceof clever_parser) {
this.parser = binary.parse(buffer); // I guess this is super.constructor(...)
_.extend(this.parser, this); // Really?
return this.parser;
} else {
return new clever_parser(buffer);
}
}
这没有通过我的嗅觉测试,以及其他人的嗅觉测试。这有什么让人觉得很危险的吗?