Понимание типов JavaScript: значение и тип – руководство для разработчиков

“Эй, погоди! Похоже, мы тут немного путаемся. Ты используешь “Admob” в качестве типа, но на самом деле это значение, друг мой. Ты хотел вместо этого использовать “typeof Admob” ? Давайте углубимся в это и исправим ситуацию!”

Хорошо, давайте разберемся и рассмотрим различные методы, чтобы прояснить различие между значением и типом в JavaScript. Пристегнитесь, ребята!

Метод 1: оператор typeof
Оператор typeof — это ваш универсальный инструмент для определения типа значения в JavaScript. Это похоже на детектива, выискивающего подсказки о природе переменной. Посмотрите этот фрагмент кода:

const admob = 42;
console.log(typeof admob);  // Output: "number"

Метод 2: оператор экземпляра
Оператор экземпляра помогает определить, принадлежит ли объект к определенному классу или типу. Взгляните на этот пример:

class Admob {
  // Class implementation here
}
const ad = new Admob();
console.log(ad instanceof Admob);  // Output: true

Метод 3: Object.prototype.toString()
Этот метод помогает получить более подробное описание типа объекта. Это похоже на получение удостоверения личности для вашей переменной. Вот как это работает:

const admob = { name: 'Admob' };
console.log(Object.prototype.toString.call(admob));  // Output: "[object Object]"

Метод 4: проверка определенных значений
Иногда вам может потребоваться определить определенные значения, сравнив их с известными типами. Вот пример:

const admob = 'OpenAI';
if (admob === 'Admob') {
  console.log('It is Admob!');
} else {
  console.log('It is not Admob!');
}

Метод 5: утиная типизация
В JavaScript мы часто фокусируемся на поведении объекта, а не на его фактическом типе. Эта концепция известна как «утиная типизация». Это все равно, что сказать: «Если что-то выглядит как утка и крякает как утка, значит, это и есть утка». Посмотрите этот фрагмент кода:

function quack(duck) {
  if (duck && typeof duck.quack === 'function') {
    duck.quack();
  } else {
    console.log("This ain't no duck!");
  }
}
const admob = {
  quack: function() {
    console.log('Quack, quack!');
  }
};
quack(admob);  // Output: "Quack, quack!"