JavaScript中的原始類型與對象

JavaScript中原始類型和對象之間的主要區別是什麼?


首先,讓我們定義什麼是基本類型。

JavaScript中的原始類型是

  • 弦樂
  • 數字(Number和BigInt)
  • 布爾值(對或錯)
  • 不明確的
  • 符號值

null是一種特殊的原始類型。如果你跑typeof null你會得到'object'返回,但這實際上是原始類型。

所有不是原始類型的東西都是目的

功能也是對象。我們可以在函數上設置屬性和方法。typeof將返回'function'但是Function構造函數是從Object構造函數派生的。

基本類型和對象之間的最大區別是

  • 基本類型是不可變的,對象僅具有不可變的引用,但是它們的值可以隨時間變化
  • 基本類型按值傳遞。對象通過引用傳遞
  • 基本類型按值複製。通過引用複制對象
  • 基本類型按值進行比較。通過引用比較對象

如果我們以這種方式複制原始類型:

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'

將對像傳遞到函數以及進行比較的工作原理相同。

說我們要比較caranotherCar

anotherCar === car //true

這是正確的,因為兩個變量都指向完全相同的對象。

但是如果anotherCar是具有與以下屬性相同的對象car,比較它們會得出一個false結果:

let car = {
  color: 'yellow'
}

let anotherCar = { color: ‘yellow’ }

anotherCar === car //false

免費下載我的JavaScript初學者手冊


更多js教程: