Глядя на эту tutorial я увидел следующий код предложение в одном из комментариев:Функция применяется с аргументами, используя срез
init:function(callback){
var that =this ;
return $http.jsonp(this.url).success(
function(data){
that.availableGenres = that.getGenres(data);
that.results = that.getResults(data);
if(callback)callback.apply(null,[].slice.call(arguments))
}
)
}
Но эта линия callback.apply(null,[].slice.call(arguments))
выглядит странно для меня.
Почему бы не просто: callback.apply(null, arguments)
? Потому что мне не нравится, когда я не понимаю, о чем я играл с этим Fiddle, чтобы понять необходимость функции slice
. Но это дает мне тот же результат, и я до сих пор его не понимаю.
Кто-нибудь знает, почему slice
не требуется?
apply() вероятно ожидает, что второй параметр будет иметь метод .pop(), однако аргументы не имеют этого метода, потому что он не является реальным массивом – roo2
@Eru: Нет. Он ожидает только, что он имеет .length' собственности, ничего больше. – Bergi