1
簡単なテストで、Javascriptのプロトタイプ、特にNode.jsを念頭に置いています。 this
はリントのインスタンスを参照されていないため、未定義Node.jsプロトタイプの継承
function Lint() {
this.input = 'foo';
events.EventEmitter.call(this);
}
Lint.prototype.dirs = function (dirs) {
_.each(dirs, this.files);
}
Lint.prototype.files = function (dir) {
console.log(this.input); // trying to get 'foo', returns undefined
}
var lint = new Lint();
lint.dirs(['js', 'js/views']);
Lint.prototype.files
ログ。私はここで何が欠けていますか?
私が考えることができる唯一の解決策は、最初のthis
を回してLint.prototype.dirs
から他の機能に移動することです。私はもっと良い方法があると確信しています。
もちろん、なぜあなたはそれをCWでしたか? – alex
@alex:それは今私のものです。私の答えはすべてCWですので、好きなだけ聞いてみてください。 ;-) –
ありがとうございました!興味深いことに、このバリエーションはなぜfalseを返すのですか? 'var this_lint = this;' '_.each(dirs、this_lint.files);' –