哪些浏览器和版本支持将常见的类数组对象直接传递到fn.apply()
Which browsers and versions support directly passing common array-like objects to fn.apply()
哪些浏览器和版本(Firefox、IE、Chrome、Safari、iOS Safari和Android)支持以下JavaScript功能apply()
功能:
function foo(){
alert('foo!');
};
foo.apply(null, arguments);
// OR
foo.apply(null, document.querySelectorAll('div'));
添加澄清:
在过去,许多浏览器都需要以下功能:
fn.apply(null, Array.prototype.slice.call(arguments, 0));
我想知道哪些浏览器和版本会接受这个:
fn.apply(this, arguments);
事实证明(基于Blue Skyes在上面的问题评论中提供的信息),在几乎所有现代浏览器中都很支持将类似数组的对象arguments
作为Function.apply()
的第二个参数。
不幸的是,对将其他常见的、类似数组的DOM对象(如NodeList
、HTMLCollection
等)传递给Function.apply()
的支持参差不齐。以下是一批针对各种桌面/移动浏览器的NodeList
传递支持(querySelectorAll()
的输出对象)的测试:http://www.browserstack.com/screenshots/e83f68eb169206f5969b6b2a2d3267bd18c520cc(绿色=支持,红色=不支持)
传递大多数类似数组的对象的大致兼容性范围是:Firefox 4+、Chrome 17+、IE9+、Safari 5.1+(iPhone 5+/iPad 3+)和Android 2.4+。
相关文章:
- Javascript:如何获取函数.apply()的键
- 另一个if(!$scope.$$phase)$scope$apply()szenario-需要帮助才能通关
- call()和apply()实际上是用来欺骗方法处理类似数组的对象的
- angular.js:13424错误:[ng:areq]参数'fn'不是函数,getObject
- Babel编译错误:找不到模块核心js/library/fn/get迭代器
- Angular Apply已经在进行中
- 是否可以在不更改上下文的情况下调用函数.apply
- JS-fn()中返回后方括号的含义{return{}[]}
- Error: timers.js:234 callback.apply(timer, args);
- 在lodash上有没有一个替代方案.merge.apply(_,x);其中x是对象的数组
- How to apply javascript on <asp:Buttonfield>?
- $scope.apply()何时应用于angular
- 将参数作为不带.apply()的数组传递
- 通过fn.apply或fn.bind将函数传递给setTimeout
- 哪些浏览器和版本支持将常见的类数组对象直接传递到fn.apply()
- 函数 (){ 返回 fn.apply(me, arguments); } 作为回调
- 将函数绑定到baz后调用fn.apply(bar,[])
- fn.apply 与第一个参数 null 或未定义
- 要传递给 fn.apply 的标准默认第一个参数
- 理解特定的$scope.$apply(fn)实现