私は、次のコード内の変数tmp
の点をご理解悩ま抱えている:このスニペットの変数 `tmp`の目的は何ですか?
$.extend($.Widget.prototype, {
yield: null,
returnValues: { },
before: function(method, f) {
var original = this[method];
this[method] = function() {
f.apply(this, arguments);
return original.apply(this, arguments);
};
},
after: function(method, f) {
var original = this[method];
this[method] = function() {
this.returnValues[method] = original.apply(this, arguments);
return f.apply(this, arguments);
}
},
around: function(method, f) {
var original = this[method];
this[method] = function() {
var tmp = this.yield;
this.yield = original;
var ret = f.apply(this, arguments);
this.yield = tmp;
return ret;
}
}
});
はなぜ単に関数のローカル変数var yield
を使用していないし、完全にaround
方法でtmp
を除外?それは何の目的ですか?これは共通のデザインパターンですか?
ありがとうございました。
一時的です。 'f()'の中で 'this.yield'が使われていると思います。これは' original'を参照する必要があります。 – Tushar
はい、 'yield'という名前のvarを使うことができます...' yield'は予約済みのキーワードです - varの名前は意味がありません –
多分this.yield = originalはf.apply( ) 関数。そのため、このデータは一時変数に格納されていました。 – Chinito