dr.Brain

doctor Brain

мир глазами веб-разработчика

Определяем тип функции

как отличить нативную функцию от созданной разработчиком в JavaScript

dr.Brain

время чтения 1 мин.

Photo by Glenn Carstens-Peters on Unsplash

В некоторых довольно сложных ситуациях перед любым разработчиком может встать вопрос: к какому типу относится та или иная функция - является ли она нативной или была создана в процессе создания сайта или приложения?

Итак, в JavaScript есть два типа функций:

  1. Нативные - встроенные функции, определяемые средой разработки,
  2. Кастомные - функции, созданные разработчиками или пользователями.

Выход есть - разные типы функций дают разные результаты при преобразовании в строку 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())
};

Спасибо за внимание.

Новые публикации

Далее

Категории

О нас

Frontend & Backend. Статьи, обзоры, заметки, код, уроки.