私はevent.jsでのonce()の実装を見ています:
EventEmitter.prototype.once = function(type, listener) {
if ('function' !== typeof listener) {
throw new Error('.once only takes instances of Function');
}
var self = this;
function g() {
self.removeListener(type, g);
listener.apply(this, arguments);
};
g.listener = listener;
self.on(type, g);
return this;
};
あなたがすることを覚えているsome_object.once('on', function(){ console.log(this); } );
一時関数g()には。がありself.removeListener(type,g)
ます。そうでなければ、g()のコンテキストが間違っているからだと思います。しかし、その後の行では、変数this
はで使用されlistener.apply(this, arguments);
ますが...これはグローバルコンテキストをに渡すのではありませんlistener(arguments)?
次に少し下がると、self.on
代わりに実行されthis.on
ます。
今...私は混乱しています。私はJavascriptにかなり慣れていませんが、それでもコンテキストに混乱しています。しかし、このコードは私にバナナを駆り立てています...誰かがここで私を教えてくれませんか?
ありがとう、
メルク。