Я работаю с angularjs и phonegap и перешел этот код, который «знаю», что он делает, но я не знаю, как это работает. Я все еще чувствую себя комфортно с продвинутыми концепциями js, поэтому, если бы вы могли быть немного описательными, я действительно мог бы это оценить.javascript function callback
Вопросы:
При регистрации обратного вызова, я не вижу следующие переменные, установленные в любом месте: аргументы (строки 5) и Fn (строка 10). Объявлены ли они в прототипе функции?
Является ли блок кода в строках 9 и 15 просто установкой «этого» значения, чтобы в обратном вызове значение «this» указывало на один и тот же объект? Что мы называем этой методикой применения «этого» значения?
myApp.factory('phonegapReady', function() {
return function (fn) {
var queue = [];
var impl = function() {
queue.push(Array.prototype.slice.call(arguments));
};
document.addEventListener('deviceready', function() {
queue.forEach(function (args) {
fn.apply(this, args);
});
impl = fn;
}, false);
return function() {
return impl.apply(this, arguments);
};
};
});