1.对象是无序的数据集合,键值对的集,写法通常有以下几种:
- let obj ={'name':'jiu','age':18}
- let obj =new Object({'name':'jiu','age':18})//构造函数正规写法
- console.log({'name':'jiu','age':18})//匿名对象,如果单写{'name':'jiu','age':18}则不是对象。
2.关于属性名(key):
- 键名是字符串,不是标识符,可以包含任意字符;
- 引号可以省略,省略之后就只能写标识符;
- 就算引号省略了,键名也还是字符串;
- 使用变量做属性名:
let p1='name'
let obj={p1:'xixi'}//这样写属性名为'p1'
let obj={[p1]:'xixi'}//这样写,属性名为'name'
3.对象的隐藏属性藏着原型的地址;
4.如何删除属性:
- obj.name=undefined//有属性名但是属性值为undefined
- delete obj.name //整个属性都不存在
5.查看属性:
- 查看属性名:Object.keys(obj)
- 查看自身+共有属性:console.dir(obj)
- 查看属性值:Object.values(obj)
- 查看所有值:Object.entries(obj)
- 查看某一个属性值:obj.name或者obj['name']
- 判断一个属性是自身的属性还是共有的属性:obj.hasOwnProperty('toString')
6.原型:每个对象都有原型,对象的原型也是对象,原型也有原型,值为null。
7.修改和增加对象属性:
- let obj = {'name'='jiu'}
- obj.name = 'jiu'
- obj['name'] = 'jiu'
- 批量赋值:Object.assign(obj,{p1:1,p2:2,p3:3})
- var person = Object.create(common)//以common对象为原型来创建person。
- 无法通过自身修改或增加共有属性。
'name' in obj和obj.hasOwnProperty('name') 的区别
- in判断的是对象的所有属性,包括对象自身及其原型的属性;
- 而hasOwnProperty则是判断对象自身是否具有某个属性。