Rozumiem, dlaczego należy używać Object.prototype.toString()
lub String()
do sprawdzania typu tablic, ale czy nie jest wystarczająca do sprawdzania funkcji i ciągów znaków? Na przykład polyfill na MDN dla Array.isArray używa:Dlaczego używać toString() do typecheck argumentów, które można sprawdzić za pomocą typeof?
Object.prototype.toString.call(arg) == '[object Array]';
To dość oczywiste w przypadku tablic, ponieważ nie można używać typeof
do sprawdzania tablic. Valentine wykorzystuje instanceof dla tego:
ar instanceof Array
Ale na smyczki/funkcje/logicznych/liczb, dlaczego nie korzystać typeof
?
jQuery i Underscore zarówno użyć czegoś takiego, aby sprawdzić funkcje:
Object.prototype.toString.call(obj) == '[object Function]';
Czy nie jest to równoznaczne z tym robi?
typeof obj === 'function'
czy nawet to?
obj instanceof Function
Pamiętaj, że nie działa z Promises, przynajmniej w Chrome w Firefoksie. 'typeof mypromise === 'object',' toString.call (mypromise) ===' [Obiekt] '', ale 'instancja mypromiseof Promise === true' – Hurelu