Javascript IE<;=8.接头()不工作
我有一些简单的代码,你可以在中看到。它在所有浏览器和IE9中都会发出正确的警报,但在IE8或IE7中不会Javascript IE<;=8.接头()不工作,javascript,Javascript,我有一些简单的代码,你可以在中看到。它在所有浏览器和IE9中都会发出正确的警报,但在IE8或IE7中不会 var func = function( x ) { var slice = [].slice, args = slice.call( arguments ), pass = args.splice(1); alert( pass ); }; func( 'a', 1, 2 ); 编辑 使用我在此处发布的解决方案: 我在不知道有多少个
var func = function( x ) {
var slice = [].slice,
args = slice.call( arguments ),
pass = args.splice(1);
alert( pass );
};
func( 'a', 1, 2 );
编辑
使用我在此处发布的解决方案:
我在不知道有多少个参数出现的情况下使用它,这就是为什么我使用“参数”Splice需要第二个参数:
Array.prototype.splice(start, deleteCount [, item1 [, item2[,...]]])
可选的第二个参数是较新浏览器中的扩展,如果未定义,则假定数组的其余部分
如果您希望元素从1到结尾,切片将更合适,看起来没有任何理由从args中删除元素。我不熟悉这个特定问题,但您尝试过吗?它有一些可能适合您的方法(我相信用from替换splice会起作用)。需要第二个
deleteCount
参数:
Array.prototype.splice(start, deleteCount [, item1 [, item2[,...]]])
表明IE遵循此标准:
arrayObj.splice(start, deleteCount, [item1[, item2[, . . . [,itemN]]]])
Firefox的SpiderMonkey允许(和其他现代浏览器一样):
说明:
有多少人
一个整数,指示要删除的旧数组元素数。如果“多少”为0,则不删除任何元素。在这种情况下,你
应至少指定一个新元素。如果没有,需要多少个参数
指定(上面的第二种语法,是SpiderMonkey扩展),
删除索引后的所有元素
资料来源:
你希望得到什么警告?你应该详细解释一下你做了什么。只是代码没有切断它!另一方面,slice更适合所展示的用例。不需要将
args
设置为数组。只需使用参数
对象。这是IE 6-9所需要的。根据我对browserstack的研究,IE 6-9悄悄地无法写入arguments对象。
array.splice(index , howMany[, element1[, ...[, elementN]]])
array.splice(index[, howMany[, element1[, ...[, elementN]]]])
var func = function (x)
{
alert ([].slice.call (arguments, 1))
}
func( 'a', 1, 2 );
(function () {
'use strict';
var originalSplice = Array.prototype.splice;
Array.prototype.splice = function (start, deleteCount) {
// convert the weird, not-really-an-array arguments array to a real one
var args = Array.prototype.slice.call(arguments);
// IE requires deleteCount; set default value if it doesn't exist
if (deleteCount === undefined) {
args[1] = this.length - start;
}
// call the original function with the patched arguments
return originalSplice.apply(this, args);
};
}());