Object.prototype.toString
В документации приведена возможность использования метода Объекта toString(), для определения типа объекта:
var toString = Object.prototype.toString; toString.call(new Date); // [object Date] toString.call(new String); // [object String] toString.call(Math); // [object Math] // Начиная с JavaScript 1.8.5 toString.call(undefined); // [object Undefined] toString.call(null); // [object Null] Об этом свойстве метода toString(), я честно говоря не знал, пока не наткнулся там же, в описании полифила метода масиива from() на такое вот условие для проверки что функция "вызываема": var toStr = Object.prototype.toString; var isCallable = function(fn) { return typeof fn === 'function' || toStr.call(fn) === '[object Function]'; }; Вопрос собственно в чём: когда первое условие (typeof fn === 'function') может не сработать? Зачем расширили условие? |
Раз никто не отвечает - попробую я.
Меня данный вопрос тоже заинтересовал, но я не смог ничего нарыть. По сути, начиная со спецификации 1997 года, typeof возвращает "function" для любого объекта с возможностью вызова Цитата:
Потому, я предполагаю, учитывая, что данный фрагмент показан на сайте разработчиков, альтернатива дается исключительно с целью показать эту самую альтернативу. Чтобы показать все возможные способы. |
Я не знал что typeof возвращает "function" для любого с возможностью вызова. Спасибо, это интересно.
Я тоже так и ничего не нашёл. Единственное что я нарыл, то это фраза "Вы не можете переопределить то, что возвращается из typeof". Направление наверное верное, но не понимаю смысл , так как результат метода call() тоже уже никак не переопределить. |
Часовой пояс GMT +3, время: 21:44. |