来自John Resig的JavaScript学习高级JavaScript#45
这个例子来自John Resig的学习高级JavaScript 这里有一些问题,我希望能得到一些帮助。提前谢谢 1) 。当来自John Resig的JavaScript学习高级JavaScript#45,javascript,Javascript,这个例子来自John Resig的学习高级JavaScript 这里有一些问题,我希望能得到一些帮助。提前谢谢 1) 。当function highest()返回makeArray(参数)时,function makeArray是否在function highest中的排序函数之前发生?因此,在makeArray()运行之后,剩下的部分 function highest(){ return makeArray(arguments).sort(function(a,b){
function highest()
返回makeArray(参数)
时,function makeArray
是否在function highest
中的排序
函数之前发生?因此,在makeArray()运行之后,剩下的部分
function highest(){
return makeArray(arguments).sort(function(a,b){
return b - a;
});
}
function makeArray(array){
return Array().slice.call( array );
}
assert(highest(1, 1, 2, 3)[0] == 3, "Get the highest value.");
assert(highest(3, 1, 2, 3, 4, 5)[1] == 4, "Verify the results.");
函数的最大值是否继续,排序是否在makeArray返回的数组上进行
2) 在函数makeArray(array)中,“call”调用到底是什么
3) 在函数makeArray中,之所以使用slice,是因为调用单独获取其参数,而不是作为数组
4) 在最后一个断言中,[1]是否表示4>数组中的位置,即排序后有一个数组['5'、'4'、'3'、'3'、'2'、'1']
Array.prototype.slice
并传递Array
,这是参数的对象。在没有参数的情况下调用时,slice
只返回它正在处理的对象的副本。这就是我们如何将类似于参数的数组
对象转换为实际数组的方法
slice
和call
串联使用,以生成实际数组的参数的副本
highest
函数返回一个数组,其中包含按降序排序的参数当我回答这个问题时,另一个答案被贴了出来。但我认为问题中显示的大部分困惑归结为一个关键点 在JavaScript中,函数和方法是对象。当你说
Array.slice
时,你得到了slice
方法。当您说Array.slice()
时,您现在正在调用slice
方法。因此Array.slice.call
访问Array
对象上slice
方法的call
属性。(该属性本身恰好是一个方法。)并且Array.slice.call(stuff)
调用该属性
这是语言的一个基本事实,很容易被忽略。但如果您不理解这一点,您会发现使用它的代码实际上不可能真正理解
sort(function(a,b){
return b - a;