JS中有哪些识别类型的方法(包括用于识别某种具体类型的方法)?

andy Javascript 398

1、typeof:可以识别标准类型/除Null外;不能识别具体对象类型(Function除外);

2、instanceof:可以判别内置对象类型;不能判别原始类型,识别自定义对象类型;

3、Object.prototype.toString.call():可以识别标准类型、内置对象类型;不能识别自定义对象类型;

4、constructor:可以判别标准类型(Underfined/Null除外),可以判别内置对象类型,可以判别自定义对象类型;

//克隆封装函数
function clone(obj){
    var o;
    if (typeof obj == 'object') {
        if (obj === null) {
            o = null;
        }else if (obj instanceof Array) {   // 当为 Array 类型
           o = [];  
            for(var i = 0, len = obj.length; i < len; i++){  
               o.push(clone(obj[i]));  
            } 
        }else if (obj instanceof Date) {    // 当为 Date 类型
            o = new Date();
            o.setTime(obj.getTime());
        }else{      // 当为 Objec 类型,这个要写在后面
            o = {};  
            for(var k in obj){  
                o[k] = clone(obj[k]);  
            } 
        }

    }else{  // 当为除 null 以外的原始类型及函数类型时(函数的深拷贝可以使用等号)
        o = obj;
    }
       return o;
}

  • 暂无回复内容