Примитивные типы и объекты в JavaScript

В чем основное различие между примитивными типами и объектами в JavaScript?


Во-первых, давайте определим, что такое примитивные типы.

Примитивные типы в JavaScript:

  • струны
  • числа (Number и BigInt)
  • логические значения (истина или ложь)
  • неопределенный
  • Значения символов

nullособый примитивный тип. Если ты бежишьtypeof nullты получишь'object'назад, но на самом деле это примитивный тип.

Все, что не является примитивным типом, являетсяобъект.

Функции тоже являются объектами. Мы можем установить свойства и метод для функций.typeofвернусь'function'но конструктор функции является производным от конструктора объекта.

Большие различия между примитивными типами и объектами заключаются в следующем:

  • примитивные типы неизменяемы, объекты имеют только неизменяемую ссылку, но их значение может меняться со временем
  • примитивные типы передаются по значению. Объекты передаются по ссылке
  • примитивные типы копируются по значению. Объекты копируются по ссылке
  • примитивные типы сравниваются по значению. Объекты сравниваются по ссылке

Если мы скопируем примитивный тип таким образом:

let name = 'Flavio'
let secondName = name

Теперь мы можем изменитьnameпеременная, присваивающая ей новое значение, ноsecondNameпо-прежнему сохраняет старое значение, потому что оно было скопировано по значению:

name = 'Roger'
secondName //'Flavio'

Если у нас есть объект:

let car = {
  color: 'yellow'
}

и копируем в другую переменную:

let car = {
  color: 'yellow'
}

let anotherCar = car

в этом случаеanotherCarуказывает на тот же объект, что иcar. Если вы установите

car.color = 'blue'

также

anotherCar.color

будет'blue'.

То же самое работает для передачи объектов функциям и для сравнения.

Скажем, мы хотим сравнитьcarкanotherCar:

anotherCar === car //true

Это верно, потому что обе переменные указывают на один и тот же объект.

Но еслиanotherCarбыл объектом с теми же свойствами, что иcar, сравнение их дало быfalseрезультат:

let car = {
  color: 'yellow'
}

let anotherCar = { color: ‘yellow’ }

anotherCar === car //false

Скачать мою бесплатнуюРуководство для начинающих по JavaScript


Больше руководств по js: