JavaScriptのプリミティブ型とオブジェクト

JavaScriptのプリミティブ型とオブジェクトの主な違いは何ですか?


まず、プリミティブ型とは何かを定義しましょう。

JavaScriptのプリミティブ型は

  • 文字列
  • 数値(NumberおよびBigInt)
  • ブール値(trueまたはfalse)
  • 未定義
  • シンボル値

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チュートリアル: