看一下本教程,我在一条评论中看到了以下代码建议:
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)
呢:?因为我不喜欢,当我不理解我用这个小提琴玩的东西时,要理解slice
那里的功能需要.但它给了我相同的结果,我仍然没有得到它.
谁知道为什么slice
需要?
你并不真的需要它,传递arguments
到apply
直接罚款.
它被指定在EcmaScript 3中被允许,并且EcmaScript 5甚至允许任何类似于数组的对象,而不仅仅是数组和参数对象.也许它需要与早期或有缺陷的JS实现向后兼容.另外,(正如你从其他答案中看到的),有些人不知道这个事实,并认为他们需要传递实际的数组 - 所以他们是不必要的小心.