关闭

javascirpt 的一些在IE下不支持的函数小结

84人阅读 评论(0) 收藏 举报
看红宝书看了两天,发现原来好多js的方法都是在IE9+才支持,连IE8都不支持。。想要实现这些方法只能自己写,总结下。
// ============   isArray  ===============//			
// isArray
function isArray(value){
	return Object.prototype.toString.call(value) == "[object Array]";
}
var arr = [1,2,3,4,5];
alert(isArray(arr)); // IE8 及以下不支持


// ============   filter 等  ===============//	
// 数组的一些方法  every(), filter(), forEach(), map(), some()
// IE8 及以下不支持
// 解决办法,以filter为例,自己写一个filter
if (!Array.prototype.filter) {
    Array.prototype.filter = function(fun /*, thisp*/){
        var len = this.length;
        if (typeof fun != "function"){
            throw new TypeError();
        }
        var res = new Array();
        var thisp = arguments[1];
        for (var i = 0; i < len; i++){
            if (i in this){
                var val = this[i]; // in case fun mutates this
                if (fun.call(thisp, val, i, this)) {
                    res.push(val);
                }
            }
        }
        return res;
    };
}

var numbers = [1,2,3,4,5,6];
var filterResult = numbers.filter(function(item, inde, array){
	return (item>2);
});
alert(filterResult); // 3,4,5,6



// ============   Date.now()  ===============//	
// Date.now(); IE8及以下不支持,只能自己写一个解决
if(!Date.now){
	Date.now = function(){
		return new Date().valueOf();
	}
}
alert(Date.now());




// ============   stringValue[1]  ===============//
// 在IE7 及以下版本显示  undefined	
var stringValue = "hello world";
alert(stringValue[1]);



// ============   trim()  ===============//
// 在IE8 及以下版本无效,需要自己写	
String.prototype.trim = function(){
	return this.replace(/(^\s*)(\s*$)/g, "");
};

var stringValue2 = "   hello world  ";
alert(stringValue2.trim());

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:640次
    • 积分:29
    • 等级:
    • 排名:千里之外
    • 原创:2篇
    • 转载:2篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档