声明对象
let obj = { 'name': 'frank', 'age': 18 }
let obj = new Object({'name': 'frank'})
如何删除对象属性
delete obj['name']
'name' in obj // false
obj.hasOwnProperty('name') // false
如何查看对象的属性
-
查看自身所有属性
Object.key(obj) //查看对象所有属性的键
Object.value(obj) //查看对象所有属性的值
Object.entries(obj) //查看对象所有属性
-
查看自身+共有属性
console.dir(obj)
-
判断一个属性是自身的还是共有的
obj.hasOwnProperty('toString')
-
两种方法查看某个属性
- 中括号语法:obj['key']
- 点语法:obj.key
如何修改或增加对象的属性
改自身 obj['name'] = 'jack' obj.name='jack'
批量改自身 Object.assign(obj, {age:18, ...})
改共有属性 obj.__proto__['toString'] = 'xxx'
改共有属性 Object.prototype['toString'] = 'xxx'
改原型 obj.__proto__ = common
改原型 let obj = Object.create(common)
注:所有 __proto__ 代码都是强烈不推荐写的
修改隐藏属性
用法:当有多个对象有相同的多个属性时
推荐使用Object.create()
let common = {hairColor:'black', 国籍:'中国'}
let obj = Object.creat(common)
obj.name = 'frank'
let obj2 = Object.creat(common)
obj2.name = 'jack'

'name' in obj和obj.hasOwnProperty('name') 的区别
'name'in obj// 判断的是obj自身包括其原型属性是否有name属性
obj.hasOwnProperty('name')// 判断的是obj自身是否含有name属性