我明白你爲什麼需要使用Object.prototype.toString()
或String()
的類型檢查數組,但不是typeof足夠的類型檢查功能和字符串?例如,對於Array.isArray上MDN的填充工具使用:爲什麼使用toString()來檢測可以用typeof檢查的參數?
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
請注意,它不適用於Promises,至少在Firefox的Chrome中。 'typeof mypromise ==='object','toString.call(mypromise)==='[Object]'',但'mypromise instanceof Promise === true' – Hurelu 2015-05-29 01:19:06