涉及的笔试题
使用typeof obj==='object’潜在问题,并不能确定obj是否是一个对象?
当初我看到这个题的时候,我的第一反应就是使用instanceof,其实这是错误的,这里让判断的就是object类型,并没有让你判断详细的对象类型(Array,String之类)
其实这里主要是为了区分null和对象,因为使用typeof 来判断null,返回的结果也是object。
这里提供三种方法来改进这个方法
方法一
if((obj!==null)&&(typeof obj==='object')&&(toString.call(obj)!="[object Array]")){}
上述方法分别判断obj不能为null,数组的情况,还有一个替代方法对空值,数组和函数返回false,但对于对象则是true的方法
方法二
if((obj!=null)&&(obj.constructor===Object)){}
方法三
var toString=Object.prototypr.toString
toString.call(null)// [object Null]
toString.call({}) //[object Object]
toString.call([]) //[object Array]