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教程: