Определяем тип функции
как отличить нативную функцию от созданной разработчиком в JavaScript
В некоторых довольно сложных ситуациях перед любым разработчиком может встать вопрос: к какому типу относится та или иная функция - является ли она нативной или была создана в процессе создания сайта или приложения?
Итак, в JavaScript есть два типа функций:
- Нативные - встроенные функции, определяемые средой разработки,
- Кастомные - функции, созданные разработчиками или пользователями.
Выход есть - разные типы функций дают разные результаты при преобразовании в строку c помощью метода toString():
console.log.toString();
ƒ toString() { [native code] }
Array.isArray.toString();
ƒ toString() { [native code] }
function SayHi(){console.log('Hi')};
undefined
SayHi.toString()
"function SayHi(){console.log('Hi')}"
Как видно из примеров, приведенных выше, при преобразовании нативной функции в строку всегда будет возвращаться результат, содержащий native ocde
.
Именно поэтому для определения типа функции в JavaScript можно написать несложную функцию, которая будет возвращать true
, если функция является нативной:
function isNative (func){
return typeof func === 'function' && /native code/.test(func.toString())
};
Спасибо за внимание.