Это не означает, что нужно два:
fun.apply(thisArg[, argsArray])
обратите внимание, что argsArray
в скобках, это необязательно.
То, что происходит по вашему вызову, заключается в том, чтоваш statusObject
передается в качестве аргумента this
вашей функции get_status
.
Это означает, что когда get_status
выполняется и выполняет return this.status
, по сути, возвращается statusObject.status
.
Применить полезно по многим причинам, одна из которых заключается в динамическом вызове методов.Я могу передать строковое имя метода в вызываемом объекте следующим образом:
methods = {
init: function(message) {
alert(message);
}
};
function executeFunc(method) {
methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
}
//now I can call like this:
executeFunc('init', 'Hey there, this is a message');
Пример этого можно найти в моем скелете плагина jQuery на GitHub