ノード バイナリバイナリ パーサーは、次のパターンでオブジェクトを構築します。
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);
}
}
これは私の嗅覚テストと他の人の嗅覚テストに失敗しました. これについて何か危険なことはありますか?