【发布时间】:2012-03-19 17:42:59
【问题描述】:
我明白为什么需要使用Object.prototype.toString() 或String() 来检查数组,但typeof 不足以检查函数和字符串吗?例如,MDN 上 Array.isArray 的 polyfill 使用:
Object.prototype.toString.call(arg) == '[object Array]';
在数组的情况下非常清楚,因为您不能使用typeof 来检查数组。 Valentine 为此使用 instanceof:
ar instanceof Array
但是对于字符串/函数/布尔值/数字,为什么不使用typeof?
jQuery 和 Underscore 都使用这样的东西来检查函数:
Object.prototype.toString.call(obj) == '[object Function]';
这不就相当于这样做了吗?
typeof obj === 'function'
甚至这个?
obj instanceof Function
【问题讨论】:
标签: javascript types typechecking