javascript中typeof操作符和constucor属性检测
*#type.js
functionPerson(name,age){
this.name=name;
this.age=age;
}
vard={an:'object'};
vara=['apple','banana'];
varf=function(){};
vars='David';
varn=33;
varb=true;
varo=newObject();
varperson=newPerson('Mark',22);
console.log(typeof(d)+':'+d.constructor);
console.log(typeof(a)+':'+a.constructor);
console.log(typeof(f)+':'+f.constructor);
console.log(typeof(s)+':'+s.constructor);
console.log(typeof(n)+':'+n.constructor);
console.log(typeof(b)+':'+b.constructor);
console.log(typeof(o)+':'+o.constructor);
console.log(typeof(person)+':'+person.constructor);
运行$nodetype.js得
object: functionObject(){[nativecode]}
object: functionArray(){[nativecode]}
function:functionFunction(){[nativecode]}
string: functionString(){[nativecode]}
number: functionNumber(){[nativecode]}
boolean: functionBoolean(){[nativecode]}
object: functionObject(){[nativecode]}
object: functionPerson(){[nativecode]}
可见,使用typeof操作符和constucor属性检测对象类型返回值是存在差异的.
如果变量是数组,typeof操作符返回object,constructor属性返回Array;
如果变量是构造函数对象,typeof操作符返回object,constructor属性返回该构造函数
每个变量都有其construcor属性,这个属性不单单提供了这个是否对象,还提供了这个对象是什么类型的对象.总之,constructor属性保存了一个指向对象的构造函数,无论它是自定义的还是原生类型的对象.
有一点需要注意的是,不同的浏览器对typeof操作符检测正则表达式会有所不同,IE和Firefox会返回'object'.
好了,今天内容就先到这里了,小伙伴们如有疑问,就在下方留言吧。