对象定义:
1. 无序的数据集合
2. 健值对的集合
注意
- 键名是字符串,不是标识符,可以包含任意字符
- 引号可以省略,省略之后就只能写标识符
- 就算引号省略,键名也还是字符串
声明对象的两种语法
写法一:
let obj = { 'key1' : 'value1' , 'key2' : 'value2'}
写法二:
let obj = new Object({ 'key1' : 'value1'})
console.log ({'key1' : 'value1' , 'key2' : 'value2'})
如何将变量做为属性名
let a = 'xxx'
var obj = {[a]:111}
- 将a用[]包起来,此时xxx是属性名;若不用[]a就会变成属性名
对象的隐藏属性
JS中每个对象都有一个隐藏属性,这个隐藏属性存储着其共有属性组成的对象的地址,这个共有属性组成的对象叫做原型。也就是说,隐藏属性存储着原型地址。
原型
- 每个对象都有原型,原型里存着对象的共有属性
- 对象的原型也是有对象的,所以对象的原型也有原型;obj={}的原型即为所有对象的原型,这个圆形包含所有对象的共有属性,是对象的根,这个对象也是有原型的,是null。
删除对象的属性
delete obj.xxx 或 delete obj['xxx']
即可删除obj的xxx对象
查看对象的属性
看所有属性
Object.keys(obj) //查看自身所有属性名
Object.values(obj) //查看自身的属性值
Object.entries 或 obj(直接打对象名) //查看自身的属性名和属性值
console.dir(obj) //查看自身+共有属性
查看属性
中括号法:obj['key'] 点语法:obj.key
如何修改或增加对象的属性
直接赋值
let obj={name: 'frank'}
obj.name = 'frank' 等价于 obj['name'] = 'frank'
let key = 'name' ;obj[key]='frank' //将变量作为属性名
批量赋值
OBject.assign(obj,{age:18,genger:'man'})
修改隐藏属性
let obj = Object.creat(common)
obj.name = 'frank'//在创建对象时就将原型修改
'name' in obj和obj.hasOwnProperty('name') 的区别
'name' in obj 是用来查看一个属性是否存在于对象中
obj.hasOwnProperty('name') 是用来判断一个属性是自身的还是共有的