对象的定义

对象一般有两种定义方式,字面量的形式定义和构造函数的方式定义

  1. //字面量定义对象
  2. let title = {name:"hello"}
  3. //构造函数的方式定义对象
  4. let person = new Object()

对象属性的操作

使用“点”语法操作对象属性

  1. let title = {}
  2. //增加对象的属性
  3. title.name = "The World Peace!"
  4. //改变对象属性
  5. title.name = "hello"
  6. //查询对象属性
  7. console.log(title.name)

使用“[]”运算符来操作属性

注意使用[]来操作属性时注意括号内的属性名必须为字符串,否则系统会认为是变量

  1. let title = {
  2. age:32,
  3. country:"china"
  4. }
  5. //增加对象的属性,
  6. title['name'] = "The World Peace!"
  7. //改变对象属性
  8. title["age"] = 55
  9. //查询对象属性
  10. console.log(title[name])
  11. //变量获取
  12. let a = "age"
  13. console.log(title[a])

属性查看的一些方法

  1. - 使用in来查询属性
  1. let title = {
  2. age:32,
  3. country:"china"
  4. }
  5. console.log("age" in title)//true 输出Boolean类型
  1. - Object.keys()、Object.values()、Object.entries()
  1. let title = {
  2. age:32,
  3. country:"china"
  4. }
  5. console.log(Object.keys(title))//["age","country"],输出的是带有属性名的数组
  6. console.log(Object.values(title))//[32,"china"],输出的是属性的值
  7. console.log(Object.entries(title))//[["age",32],["country","china"]],输出的是含有属性名和属性值得数组

解构赋值操作对象

  1. let title = {
  2. age:32,
  3. country:"china"
  4. }
  5. //通过解构赋值来获取对象的属性值
  6. let {age country} = title
  7. console.log(age,country)//输出 32,'china'
  8. //通过解构复制对象
  9. let a = {...title}
  10. //通过解构赋值合并对象
  11. let b = {...a, ...title}

使用Object.assign()

  1. let a ={
  2. name:"hellop"
  3. }
  4. let b = {
  5. age:12,
  6. show(){
  7. console.log(this.name)
  8. }
  9. }
  10. Object.assign(a,b)//合并对象
  11. let c = Object.assign({},b)//复制对象

对象的属性特征

属性特征的种类

  1. - value ----属性的值
  2. - writable ---- 是否可以修改
  3. - enumberable ---- 是否可以遍历
  4. - configurable ---- 是否可以配置,
  5. - 不可设置configurabletrue
  6. - 不可设置enumerabletruefalse falsetrue均不可以);
  7. - **不可设置writablefalsetrue,可设置writabletruefalse**

查看属性特征的方法

Object.getOwnPropertyDescriptor(对象, 属性名)

  1. let a ={
  2. name:"hellop"
  3. }
  4. console.log(Object.getOwnPropertyDescriptor(a,"name"))
  5. //{value: 'hellop', writable: true, enumerable: true, configurable: true}

设置属性的特征

  1. let a ={
  2. name:"hellop"
  3. }
  4. //设置对象的单个属性的特征
  5. Object.defineProperty(a,"name",{
  6. writable:false
  7. })
  8. //设置对象的多个属性的特征
  9. Object.defineProperties(
  10. {name:{
  11. value:"jack"
  12. }
  13. }
  14. )

Object.freeze(对象)

  1. let a ={
  2. name:"hellop"
  3. }
  4. Object.freeze(a)
  5. console.log(Object.getOwnPropertyDescriptor(a,"name"))
  6. //value: 'hellop', writable: false, enumerable: true, configurable: false