声明对象语法
1.let obj = {key:'value'}(快捷写法)
2.let obj = new Object({key:'value'})(标准写法)
对象的增删改查
删除对象属性
1.delete obj['key']
2.delete obj.key
查看对象属性
1.obj.key
2.obj.['key']
查看对象!自身!所有属性名:Object.keys(obj)
查看对象!自身!所有属性值:Object.values(obj)
查看自身+共有属性:console.dir(obj)
或用Object.keys遍历所有原型
查看对象是否含有属性名:'xxx' in obj
查看对象的属性是自身的还是共有的: obj.hasOwnProperty('toString')
注意:1.obj.key === undefined 不能判断对象没有对应属性,因为对应的属性值可能为undefined。
2.'xxx' in obj 与 obj.hasOwnProperty('xxx')的区别是,前者的true表示key是自身的或共有的,后者的true表示key是自身的;前者的false表示key不存在,后者的false表示key不存在或者是共有的。
更改和增加对象属性(若无则加,已有则改)
直接赋值
obj.key = 'value'
obj['key'] = 'value'
批量赋值
Object.assign(obj,{key:'value',p1:'p2',.......}
修改共有属性(无法通过自身增改共有属性)
1.obj.__proto__.toString = 'xxx'(不推荐用__proto__)
2.Object.prototype.toString = 'xxx'
一般来说,不要修改原型,会引发许多问题
修改隐藏属性指向
1.obj.__proto__ = common(不推荐使用__proto)
2.obj = Object.create(common)(含义是要更改就一开始创建对象时就更改)