对象的定义
对象一般有两种定义方式,字面量的形式定义和构造函数的方式定义
//字面量定义对象let title = {name:"hello"}//构造函数的方式定义对象let person = new Object()
对象属性的操作
使用“点”语法操作对象属性
let title = {}//增加对象的属性title.name = "The World Peace!"//改变对象属性title.name = "hello"//查询对象属性console.log(title.name)
使用“[]”运算符来操作属性
注意使用[]来操作属性时注意括号内的属性名必须为字符串,否则系统会认为是变量
let title = {age:32,country:"china"}//增加对象的属性,title['name'] = "The World Peace!"//改变对象属性title["age"] = 55//查询对象属性console.log(title[name])//变量获取let a = "age"console.log(title[a])
属性查看的一些方法
- 使用in来查询属性
let title = {age:32,country:"china"}console.log("age" in title)//true 输出Boolean类型
- Object.keys()、Object.values()、Object.entries()
let title = {age:32,country:"china"}console.log(Object.keys(title))//["age","country"],输出的是带有属性名的数组console.log(Object.values(title))//[32,"china"],输出的是属性的值console.log(Object.entries(title))//[["age",32],["country","china"]],输出的是含有属性名和属性值得数组
解构赋值操作对象
let title = {age:32,country:"china"}//通过解构赋值来获取对象的属性值let {age country} = titleconsole.log(age,country)//输出 32,'china'//通过解构复制对象let a = {...title}//通过解构赋值合并对象let b = {...a, ...title}
使用Object.assign()
let a ={name:"hellop"}let b = {age:12,show(){console.log(this.name)}}Object.assign(a,b)//合并对象let c = Object.assign({},b)//复制对象
对象的属性特征
属性特征的种类
- value ----属性的值- writable ---- 是否可以修改- enumberable ---- 是否可以遍历- configurable ---- 是否可以配置,- 不可设置configurable为true;- 不可设置enumerable(true为false 和 false为true均不可以);- **不可设置writable由false为true,可设置writable由true为false**
查看属性特征的方法
Object.getOwnPropertyDescriptor(对象, 属性名)
let a ={name:"hellop"}console.log(Object.getOwnPropertyDescriptor(a,"name"))//{value: 'hellop', writable: true, enumerable: true, configurable: true}
设置属性的特征
let a ={name:"hellop"}//设置对象的单个属性的特征Object.defineProperty(a,"name",{writable:false})//设置对象的多个属性的特征Object.defineProperties({name:{value:"jack"}})
Object.freeze(对象)
let a ={name:"hellop"}Object.freeze(a)console.log(Object.getOwnPropertyDescriptor(a,"name"))//value: 'hellop', writable: false, enumerable: true, configurable: false
