1. 声明对象的两种语法
let obj = {};
let obj = new Object()
2. 如何删除对象的属性delete obj.xxx
或delete obj['xxx']
注意区分“属性名为undefined”和“不含属性名”。
不含属性名:'xxx' in obj === false;
含有值为undefined的属性名:'xxx' in obj && obj.xxx === undefined;
注:obj.xxx === undefined 不能断定'xxx'是否为obj属性。
3. 如何查看对象的属性
查看自身所有属性:Object.keys(obj)
查看自身+公有属性:console.dir(obj)
或者依次用Object.keys打印出obj.__proto__
判断一个属性是自身还是公有的:obj.hasOwnProperty('toString')
4. 如何修改或增加对象的属性
直接赋值:let obj = {name: 'frank'}
或obj.name = 'frank'
或obj['name'] = 'frank'
或obj['na'+'me'] = 'frank'
或let key = 'name';obj[key] = 'frank'
批量赋值: Object.assign(obj,{age:18,gender:'man'})
5. 'name' in obj和obj.hasOwnProperty('name') 的区别
前者检查对象obj是否包含'name'属性,后者是检查'name'是否是obj的公有属性。