я просто проходящие через документации $ .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 не очень много говорит об этом методе тоже.
может кто-нибудь объяснить? Я понимаю, что это контекст, но я не понимаю, что в фрагменте кода, о котором я упомянул выше, что это будет указывать?
Кроме того, я не понимаю, какую часть resolWith играет в приведенном выше фрагменте кода в любом случае. мое единственное предположение, что resolveWith()
приводит к исполнению ниже строки кода:
return defer.done(callback).promise();
снова я не слишком уверен в этом.