1:声明对象的两种语法
let obj = { 'name': 'frank', 'age': 18 }
let obj = new Object({'name': 'frank'})
●细节
1.键名是字符串,不是标识符,可以包含任意字符
2.引号可省略,省略之后就只能写标识符
3.就算引号省略了,键名也还是字符串(重要)
2:如何删除对象的属性
''delete obj.xxx''或'delete obj['xxx']'即可删除obi的xxX属性
请区分属性值为undefined」和「不含属性名」
●不含属性名
'xxx' inobi==e false
含有属性名,但是值为undefinedxxx' in obj && obj.xx === undefined
注意obj.xx === undefined不能断定'xxx'是否为obj的属性
3:如何查看对象的属性
查看自身所有属性
Object.keys(obj)
查看自身+共有属性
console.dir(obj)
或者自己依次用Object.keys打印出obj.__ .proto__判断一个属性是自身的还是共有的
obj.hasOwnProperty'toString')
4:如何修改或增加对象的属性
obj['name']= jack'//改自身
Object.assign(obj, {age:18, ..})//批量改自身
obj. __proto__['toString']= 'Xxx'//改共有属性
Object.prototype['toString']= 'xxx'//改共有属性
obj.__proto__ = common//改原型
let obj = 0bject.create(common)//改原型
注:所有__proto__代码都是 强烈不谁很写的
\
5:'name' in obj和obj.hasOwnProperty('name') 的区别
'name' in obj用来判断name属性是否为obj的属性(包括自身属性和公有属性),而obj.hasOwnProperty('name') 用来判断name属性是否为obj的自身属性,不包括公有属性