Types primitifs vs objets en JavaScript

Quelle est la principale différence entre les types primitifs et les objets en JavaScript?


Tout d'abord, définissons quels sont les types primitifs.

Les types primitifs en JavaScript sont

  • cordes
  • nombres (Number et BigInt)
  • booléens (vrai ou faux)
  • indéfini
  • Valeurs des symboles

nullest un type primitif spécial. Si vous coureztypeof nulltu auras'object'retour, mais c'est en fait un type primitif.

Tout ce qui n'est pas un type primitif est unobjet.

Les fonctions sont aussi des objets. Nous pouvons définir des propriétés et une méthode sur les fonctions.typeofreviendra'function'mais le constructeur Function dérive du constructeur Object.

Les grandes différences entre les types primitifs et les objets sont

  • les types primitifs sont immuables, les objets n'ont qu'une référence immuable, mais leur valeur peut changer avec le temps
  • les types primitifs sont passés par valeur. Les objets sont passés par référence
  • les types primitifs sont copiés par valeur. Les objets sont copiés par référence
  • les types primitifs sont comparés par valeur. Les objets sont comparés par référence

Si nous copions un type primitif de cette manière:

let name = 'Flavio'
let secondName = name

Maintenant, nous pouvons changer lenamevariable lui attribuant une nouvelle valeur, maissecondNamedétient toujours l'ancienne valeur, car elle a été copiée par valeur:

name = 'Roger'
secondName //'Flavio'

Si nous avons un objet:

let car = {
  color: 'yellow'
}

et nous le copions dans une autre variable:

let car = {
  color: 'yellow'
}

let anotherCar = car

dans ce casanotherCarpointe vers le même objet quecar. Si vous définissez

car.color = 'blue'

également

anotherCar.color

sera'blue'.

La même chose fonctionne pour transmettre des objets à des fonctions et pour comparer.

Disons que nous voulons comparercaràanotherCar:

anotherCar === car //true

Cela est vrai car les deux variables pointent exactement vers le même objet.

Mais sianotherCarétait un objet avec les mêmes propriétés quecar, les comparer donnerait unfalserésultat:

let car = {
  color: 'yellow'
}

let anotherCar = { color: ‘yellow’ }

anotherCar === car //false

Téléchargez mon gratuitManuel du débutant JavaScript


Plus de tutoriels js: