1.javascript类型:
注:包装对象:如“hello”.length实际为js为我们隐式创建了一个String临时对象,去调用该对象的length属性,调用过后再将该临时对象删除。
因此,如果原始类型变量使用.length,.toString()等js属性、方法等,用var str = new String(‘hello’)的效率要优于var str = ‘hello’,因为使用过程中无需再多次建立和删除临时包装对象。
2.javascript类型检测:
(1).typeof:适用于原始类型(除了null)和Function类型
使用方法:例:typeof “hello” 返回 “string”
可检测出类型变量的返回值:“类型”。如“number”,“boolean”
不可检测出类型变量的返回值:“object”
(2).instanceof:基于原型链进行检测。用于对象类型。可用于原生对象和自定义对象。
使用方法:[1,2] instanceof Array 返回 true;
返回值:true / false
自定义对象检测举例:
注:iframe或window之间的自定义对象不可检测。
(3).Object.prototype.toString:适用于基本类型和对象类型。(ie6/7/8无法检测出null和undefined)
使用方法:Object.prototype.toString.apply('a') 返回 "[object String]"
返回值:"[object 类型]"。如"[object Array]","[object Null]"
参考资料: