声明对象的两种语法
主要有以下两种方法:
1. var a = 1
2. let a =2
读取对象的方法:
var obj = {
p: 'Hello World'
};
obj.p // "Hello World"
obj['p'] // "Hello World
如何删除对象的属性
delete命令用于删除对象的属性,但是无法删除继承的属性,删除成功后返回true。
delete obj.xxx
delete obj['xxx']
上面代码中,delete命令删除对象obj的xxx属性。删除后,再读取xxx属性就会返回undefined,而且Object.keys方法的返回值也不再包括该属性。
注意,删除一个不存在的属性,delete不报错,而且返回true。
如何查看对象的属性
查看对象的属性,可以用 Object.keys方法。对于单个属性,查看对应的值,直接可以obj.key
var obj = {
key1: 1,
key2: 2
};
Object.keys(obj);
// ['key1', 'key2']
// 读取某个属性值
obj.key1
// 1
如何修改或增加对象的属性
- 可以对对象的属性重新赋值。
let obj = {name: 'frank'} // name 是字符串
obj.name = 'frank' // name 是字符串 obj['name'] = 'frank'
obj[name] = 'frank' // 错,因 name 值不确定
obj['na'+'me'] = 'frank' let key = 'name';
obj[key] = 'frank' let key = 'name';
obj.key = 'frank' // 错 因为 obj.key 等价于 obj['key']
- 也可以批量赋值
Object.assign(obj, {age: 18, gender: 'man'})
'name' in obj和obj.hasOwnProperty('name') 的区别
- obj.hasOwnProperty('name') 可以
判断自身是否拥有属性名为'name'的属性,不包含隐藏属性。 - 'name' in obj 可以用于
判断自身是否拥有或有继承过一个属性名为 'name'的属性,包含隐藏属性。