码迷,mamicode.com
首页 > 其他好文 > 详细

push方法的兼容性问题

时间:2016-11-10 19:06:16      阅读:272      评论:0      收藏:0      [点我收藏+]

标签:方法   innerhtml   调用   color   输出   var   封装   create   span   

在IE8及以下中,不支持aplly方法中的第二个参数是 伪数组

需要对push方法进行封装。

将 push 的判断,放入一个沙箱中:
好处:在页面加载的时候就会执行这段代码,保证了代码只会检测一次
以后的操作中直接使用调用 push 即可。
jquery源码中也是这样封装的,在用jquery操作DOM元素时,不需要考虑此兼容性问题啦
 1 var push = [].push;
 2 try {
 3     // 判断 push 是否可用
 4     var container = document.createElement("div");
 5     container.innerHTML = "<p></p><p></p>";
 6     push.apply([], container.childNodes);
 7 } catch(e) {
 8     // 自己封装push方法
 9     push = {
10         apply: function(target, els) {
11             var j = target.length;
12                 i = 0;
13             while(target[j++] = els[i++]) {}
14             target.length = j - 1;
15         }
16     };
17 } finally {
18     container = null;
19 }

 例如:

var arr = [1, 2, 3];

[].push(arr, {"a", "b"});

console.log(arr);  // [1, 2, 3, "a", "b"]  IE8也可正常输出

push方法的兼容性问题

标签:方法   innerhtml   调用   color   输出   var   封装   create   span   

原文地址:http://www.cnblogs.com/2010master/p/6051968.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!