В this question Я не видел предложений по использованию конструктора.constructor vs typeof для определения типа в JavaScript
Таким образом, вместо typeof callback == "function"
Я хотел бы использовать callback && (callback.constructor==Function)
.
Для меня кажется очевидным, что сравнение с указателями памяти всегда лучше, чем сравнение со строками с точки зрения производительности и безопасности кодирования.
Почему бы не использовать конструктор, чтобы обнаружить все типы и забыть об уродливых typeof
?
Это работает для всех примитивных типов, функций и массивов:
undefined === undefined
null === null
[1,2,3].constructor == Array
(1).constructor == Number
(true).constructor == Boolean
(()=>null).constructor == Function
'abc'.constructor == String
(new Date()).constructor == Date
else it's an object, where instanceof helps to detect it's parents if needed.
Если string interning можно полагаться на то преимущество во время выполнения производительности уходит. Но безопасное кодирование преимуществ все еще остается.
Сравнение '' function' с function'? – Rayon