我遇到了一段我无法理解的代码 - :
Array.remove = function(array, from, to) {
var rest = array.slice((to || from) + 1 || array.length);
array.length = from < 0 ? array.length + from : from;
return array.push.apply(array, rest);
};
这是什么意思?是否意味着我超越了我的网络浏览器的默认remove()
功能?这在旧版浏览器中是否兼容?
更令人困惑的是如何调用函数 - :
Array.remove(foo, bar);
可以看出,当函数列出三个形式参数时,有两个实际参数。函数如何知道使用哪一个?
答案 0 :(得分:0)
这是什么意思?是否意味着我超越了我的网络浏览器的默认remove()函数?
这意味着您要向全局Array
对象添加一个名为“remove”的方法。如果它已经有了一个名称的方法,你就会覆盖它。
这在旧浏览器中是否兼容?
是的,几乎任何浏览器都允许你这样做。
可以看出,当函数列出三个形式参数时,有两个实际参数。函数如何知道使用哪一个?
Javascript并不关心您传递给函数的参数数量。它将按顺序匹配提供的参数,并将undefined
分配给任何没有提供值的参数。
答案 1 :(得分:0)
您不能覆盖array.remove。它是一种静态方法:&#39;允许您从数组中删除项目或一组项目&#39;