一、JS对象的概念
JS对象是无序的数据集合,是键值对的集合。
let student={"name":"frank","age":18}
键名是字符串,引号可省略,省略后也还是字符串
var a = {2:222}
Object.keys(a) //["2"]
二、声明对象的两种语法
let a = 1
const a = 1
三、如何删除对象的属性
delete obj['xxx']
delete obj.xxx
检查是否删除成功:'xxx' in obj === false
四、如何查看对象的属性
查看自身的所有属性名: Object.keys(object)
查看自身的所有属性值: Object.name(object)
查看自身+共有属性: console.dir(object)
查看自身所有属性名+值:Object.entriesz(obj)
判断是否自身属性: object.hasOwnProperty('key')
每个对象都有原型,对象的原型也是对象,原型也有原型,为null
中括号语法: obj['key']
点语法: obj.key
优先使用中括号语法,点语法容易误以为key不是字符串
报错语法: obj[key] 没有引号,不等价以上语法
let name = 'frank'
obj[name]===obj['frank']
五、如何修改或增加对象的属性
直接赋值:
let obj={name:'frank'}
obj.name='frank'
obj['name']='frank'
let key='name'; obj['name']='frank'
改自身属性:
obj['name']='jack'
改共有属性:
obj. _ proto _ ['toString']='xxx' // 不推荐
Object.prototype['toString']='xxx'
改原型:
obj. _ proto _=common // 不推荐
let obj = Object.create(common)

六、'name' in obj和obj.hasOwnProperty('name') 的区别
'name' in obj是检验属性是否存在对象中
obj.hasOwnProperty('name')是判断属性为自身的还是共有的
补充:
in 表示obj对象中是否包含name字符串这个键,如果原型链中也有name字符串这个属性名,也可以返回true
hasOwnProperty 则表示在obj对象中是否包含name字符串这个属性名。不从含原型链中查找