我正要通過$ .Deffered jQuery中的文檔和整個下面的例子來的用法:理解這裏面
$.fn.bindOnce = function(event, callback) {
var element = $(this[ 0 ]),
defer = element.data("bind_once_defer_" + event);
if (!defer) {
defer = $.Deferred();
function deferCallback() {
element.unbind(event, deferCallback);
defer.resolveWith(this, arguments); // What is `this` and `arguments` here ?
}
element.bind(event, deferCallback)
element.data("bind_once_defer_" + event , defer);
}
return defer.done(callback).promise();
};
你可以看到同樣的例子HERE,現在的代碼是不是過於複雜,但也有幾件事情,不太有意義,例如,看到的代碼下面的代碼片段:
function deferCallback() {
element.unbind(event, deferCallback);
defer.resolveWith(this, arguments);
}
代碼是非常標準的,我不明白,雖然是什麼是this
指向上面的代碼?我不知道這是指向在上面的代碼。
documentation對此方法也沒有多說。
有人能解釋嗎?我明白這是上下文,但我不明白的是,在上面提到的代碼片段中,這將指向什麼?
另外我不明白什麼部分resolveWith在上面的代碼片段中扮演反正。我唯一的猜測是,resolveWith()
結果在下面的一行代碼的執行:
return defer.done(callback).promise();
再次我也不太清楚這件事。