一、声明
let obj = {'name':'dlxx','age':23} (name和age只能是字符串,不加''也是字符串,键名只能是字符串(可以包含任意字符,第一个数字也可以))
let obj = new Object({'name':'dlxx','age':23})(正规写法,但是上面写法简单)
当用变量声明:
let a = 'dlxx'
var obj = {
[a] : 1
} //不加[]会变为字符串'a'
二、删除对象的属性
delete obj.name (删除属性名和属性值)
delete obj['name'](删除属性名和属性值)
obj.name = undefined (仅仅删除属性值)
- 判断是否含有xx属性:
'xx' in obj === true/false
三、查看对象的属性
- 查看自身属性
Object.keys(obj) (查看自身所有属性)
Object.values(obj) (查看自身所有属性值)
Object.entries(obj)(查看自身属性和属性值)
- 查看原型属性
- console.dir(obj) (按目录打印出自身和原型属性)
- 查看属性值
obj['name']
obj.name
obj[name] (此时,name是变量,要先求[]里的值)
'name' in obj和obj.hasOwnProperty('name') 的区别
obj.hasOwnProperty('name')仅查看是否为自身属性
'name' in obj无法区分是自身属性或原型属性
四、修改或增加对象的属性
- 直接赋值:
obj['name'] = 'dlxx'
- 批量赋值:
Object.assign(obj,{name:'dlxx',age:23})
- 修改原型属性:
obj.__proto__['toString']='xxx'
- 修改原型属性:
Object.prototype['toString']='xxx'
- 改原型:
obj.__proto__= common
- 改原型:
let obj = Object.create(common)
__proto__不推荐使用
五、 注意
obj.name等价于obj['name']
obj.name不等价于obj[name]