如何声明对象
1 | let obj = { 'name': 'frank', 'age': 18} |
- 键名是字符串,不是标识符,可以包含任意字符
- 引号可以省略,省略之后就只能写标识符
- 就算引号省略,键名key永远都是字符串
删除对象的属性
1 | delete obj['name'] // 新手推荐写法 |
注意区分’不含属性名’和’属性值为undefined’1
2
3
4
5
6
7
8
9
10
11
12var obj = {} // 不含属性xxx
var obj2 = {'xxx': undefined} // 含属性xxx,但值为undefined
obj.xxx === undefined // true
obj2.xxx === undefined // true
'xxx' in obj // false
'xxx' in obj2 // true
obj.xxx === undefined 不能断定 'xxx' 是否为obj的属性
应该使用'xxx' in obj
查看对象属性
1 | // 查看自身属性 |
1 | // 查看自身属性+共有属性 |
1 | // 判断一个属性是否是自身属性 |
1 | // 查看obj的一个属性 |
修改或增加对象属性
修改或增加自身属性
1
2
3
4
5
6
7// 单个赋值
let obj = {'name': 'joyce'}
obj.age = 25
obj['hobby'] = cooking
// 批量赋值
Object.assign(obj, {'age': 25, 'hobby': 'cooking'})修改或增加共有属性(原型)
1
2
3
4
5
6
7
8var common = {'nation':'China', 'hair':'brown'}
var person = Object.create(common) // 以common为原型创建person
Object.assign(person, { // 批量给person增加属性
'name' :'joyce',
'age' : 25,
'hobby' : 'cooking',
})修改或增加共有属性(原型)的值
1
2
3obj.__proto__.toString = 'yyy'
Object.prototype.toString = 'yyy'