对象的定义
1. 无序的数据集合
2. 键值对的集合
一、声明对象的两种语法
let obj = {'name' : 'james','age': 36} //简略写法
let obj = new Object({'name' : 'james', 'age': 36}) //规范写法
console.log({'name' : 'james','age': 36} ) //该语句创建的对象没有名字
- 细节:
- 键名是字符串不是标识符,可以包含任意字符
- 引号可以省略,省略之后就只能写标识符
- 就算是引号省略了键名还是字符串
二、删除对象的属性
新手推荐删除属性语句:
delete obj.['name']
另一种删除属性语句:
delete obj.name
可以用以下语句判断属性是否删除:
'name' in obj === false
注意,以下语句不能断定 'xxx' 是否为 obj 的属性:
obj.xxx === undefined
三、查看对象的属性
查看自身所有属性
Object.keys(obj)
查看自身+共有属性
console.dir(obj)
或者自己依次用Object.keys打印出 obj._proto_(不推荐)
判断一个属性是自身的还是共有的
obj.hasOwnProperty('toString')
两种方法查看属性
- 中括号语法:
obj['key'] - 点语法:
obj.key
- 坑新人语法:
obj[key] // 变量 key 值一般不为 'key
四、修改或增加对象的属性
修改自身属性
obj['name']='jack'
批量修改自身属性
Object.assign(obj,{'name' : 'james',age': 36});
修改共有属性
Object.prototype['toString'] = 'xxx'
修改原型
let obj = Object.create(common)
五、'name' in obj和obj.hasOwnProperty('name') 的区别
'name' in obj//可以判断obj对象不含xxx属性
obj.hasOwnProperty('name')//用来判断一个属性是obj自身的还是共有的