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'.
好了,今天内容就先到这里了,小伙伴们如有疑问,就在下方留言吧。