08.可变类型
不可变类型-原始值
- 原始值都是不可变的类型,值一旦创建就无法修改!
- 每次创建新的值都会先在内存中查找是否存在相同的值,如果存在直接赋予内存地址,不存在才会创建新的值。
- 当我们为一个变量赋值时绝不会影响其他变量。
可变类型-对象
- 对象创建完成后,可以任意增加删除修改对象中的属性
2. 注意:当对两个对象进行相等或全等比较时,比较的是对象的内存地址
let obj1 = Object()
let obj2 = Object()
console.log(obj1 == obj2) //false
3. 如果有两个变量指向同一个对象,通过一个变量修改对象,另一个变量也会产生影响
let obj1 = {
name: "孙悟空",
age: 18,
gender: "male"
}
let obj2 = obj1
console.log(obj1)
console.log(obj2)
console.log(obj1 == obj2) //true
//通过obj2修改obj1中定义的属性
obj2.name = "猪八戒"
4.通过给obj2重新赋值可以解除obj1和obj2之间的联系(让obj2的指针指向别处)
<script>
let obj1 = {
name: "孙悟空",
}
let obj2 = obj1
obj2 = {}
obj2.name = "猪八戒"
console.log(obj1)
console.log(obj2)
</script>
5.在使用变量存储对象时,为了不让变量指向的对象换来换去,通常用const禁止变量重新赋值。当然对于对象的增删改毫无影响。
变量:obj1,obj2这种就是变量;
对象:{},object()
<script>
// 这里变量obj1只能被赋值一次
const obj1 = {
name: "孙悟空",
}
// 这里变量obj2只能被赋值一次
const obj2 = obj1
obj2.name = "猪八戒"
console.log(obj1)
console.log(obj2)
</script>