我正在使用 angularjs 和 phonegap 并遇到了我“知道”它的作用的代码,但我不知道它是如何工作的。我仍然对高级 js 概念感到满意,所以如果你能稍微描述一下,我真的很感激。
问题:
在回调注册中,我没有在任何地方看到以下变量设置:arguments(第 5 行)和 fn(第 10 行)。它们是否在函数原型中声明?
第 9 行和第 15 行的代码块是否只是设置“this”值,以便在回调中“this”值指向同一个对象?我们将这种应用“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);
};
};
});