Использование toString () вместо конструктора в JavaScript

Вероятно, это глупый вопрос, поэтому, пожалуйста, оставайтесь со мной.

Почему я вижу так много примеров, проверяющих, является ли объект функцией, путем сравнения его toString () с «[функция объекта]»?

Например:

function isFunction(obj) {
    return Object.prototype.toString.call(obj) == "[object Function]";
}

Нельзя использовать instanceof Function или obj. конструктор === Функция ? Разве они не совместимы с кроссбраузерностью?

Этот кажется неэффективным, но так ли это? Почему?

13
задан Eric Wendelin 3 December 2010 в 15:58
поделиться