JavaScript中的对象

本文最后更新于:1 个月前

对象基本操作

  • 如果我们需要在程序中表示一个人的信息,使用原始值无法表现出“一个整体的”的特点,对象能够完成这个任务
  • 对象是JS中的一个复合数据类型,它相当于一个容器,在对象中可以存储各种不同类型的数据
1
2
let obj = new Object //创建了一个新的对象
let obj = Object //简化版,省略了new
  • 对象中可以存储多个类型的数据,对象里存储的数据被称为属性
  • 向对象中添加属性:对象.属性名 = 属性值
1
2
3
obj.name = "Tom"
obj.age = 18
obj.gender = "男"
  • 读取对象中的属性对象.属性名
1
console.log(obj.name)
  • 修改对象中的属性
1
obj.age = 20
  • 删除对象中的属性
  • 如果读取的是一个对象中没有的属性,会输出Undefined
1
delete obj.name

对象的属性

属性名

  • 通常属性名就是一个字符串,所以属性名可以是任何值,没有特殊要求,但是太特殊会不能直接使用,还是强烈建议属性名也按照标识符的规范

1
2
3
4
5
obj.if = '1' //合法
obj.let = '666' //合法
obj.1234 = '2334' //不合法!
obj.[" 123@**!! "] = "123" //合法
//避免使用这些属性名
  • 也可以用符号作为属性名,使用symbol作为属性名

  • 获取这种属性时也需要通过symbol获取

  • 使用symbol获取的属性,通常是不希望被外界访问的属性

1
2
3
let mySymbol = Symbol()
obj[symbol] = "通过symbol添加的属性"
console.log(obj[mySymbol])
  • 使用[]操作属性时,可以使用变量

1
2
let str = 'address'
obj[str] = '翻斗大街'//等价于obj["address"] = '翻斗大街'

属性值

  • 对象的属性值可以是任意的数据类型,也可以是一个对象

1
2
3
4
obj.f = Object()
obj.f.name = 'Bob'
obj.f.age = 28
console.log(obj.f.name)
  • in运算符

  • 检查对象是否有某个属性,返回true或false

1
console.log("name"in obj)

对象字面量

可以使用字面量的方式创建对象可以直接使用{}来创建对象可以直接向对象里添加属性

1
2
let obj = {}
let obj = {name:'Tom',age:18,["gender"]:'男'}

枚举对象中的属性

  • 枚举属性:将对象中的所有的属性全部获取

  • for-in语句

  • for(let propName in 对象){...}

  • 有几个属性运行几次,并不是所有的属性都可以枚举,比如用符号添加的属性

1
2
3
4
5
6
7
8
9
10
let obj ={
name='Tom',
age = 18,
gender = '男'
}

for(let propName in obj){
console.log(1);//打印三次
console.log(propName, obj[propName])//获取属性名以及属性值
}

可变类型

  • 原始值都属于不可变类型,一旦创建就无法修改,在内存中不会创建重复的原始值

  • 对象是一种可变类型,对象创建完成后,可以任意的添加修改删除对象中的属性

  • 注意:如果有两个变量同时指向一个对象,同一个变量修改对象时也会产生影响

  • 当两个对象进行比较时,实际比较的是内存地址

变量和对象

  • 修改对象

修改对象时,如果有其他变量指向该对象,则所有指向改对象的变量都会受到影响

  • 修改变量

修改变量时,只会影响当前的变量

  • 在使用变量存储对象时,很容易因为改变变量指向的对象,提高代码的复杂度,所以通常情况下,声明存储对象的变量时会使用const

方法

1
2
3
4
5
6
7
8
9
let obj = {}

obj.name = 'Tom'
obj.age = 18
//函数也可以称为一个对象的属性
obj.sayHello = function(){
alert('hello!')
}
obj.sayHello()//调用obj的sayHello方法

方法

  • 放一个对象的属性指向一个函数,那么我们就称这个函数是该对象的方法,调用函数就被称为调节对象的方法。


JavaScript中的对象
https://blog.seasalt-haiyan.top/2024/03/04/JavaScript中的对象/
作者
Xu Haoyang
发布于
2024年3月4日
更新于
2024年3月5日
许可协议