JS中有哪些识别类型的方法(包括用于识别某种具体类型的方法)?
Javascript 178
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;
}