object是第七种数据类型,唯一一种复杂类型

声明

最常用的简单写法
let obj = {'name': 'frank', 'age': 18}

obj.name = 'frank' //name是字符串
obj.['name'] = 'frank'

细节

  • 键名是字符串,不是标识符,可以包含任意字符
  • 引号可省略,省略之后就只能写标识符
  • 就算引号省略了,键名也还是字符串

删除

删除obj的xxx属性
detele obj.xxx 或者 delete obj['xxx']

判断不含属性名
'xxx' in obj === false(xxx一定要加单引号)

判断含有属性名,但属性值为undefined
'xxx' in obj &&obj.xxx === undefined

查看

输入属性名查看属性值
obj['key']

obj.key
这里的 name 是字符串 ,等价于obj['name']
点语法会误导你,让你以为key不是字符串

obj[key]  
这里的 key 是变量,循环打印的时候会用到这种写法,因为可以不断的替换变量的值
js会求[ ] 中表达式的值

查看自身所有属性名
Object.keys(obj)

查看自身+共有属性
console.dir(obj)

判断一个属性是自身的还有共有的
obj.hasOwnProperty('toString')
结果true就说明是自身的

key in obj 和 obj.hasOwnProperty('toString')的区别
'key' in obj 不能判断出这个属性是自身属性还是共有属性
obj.hasOwnProperty('key') 可以判断出这个属性是自身属性还是共有属性

浏览器控制台直接输入对象的名字: obj 再按回车
就会返回对象的所有属性名和属性值

修改

改自身:obj['name'] = 'jack'

批量赋值: Object.assign(obj, {age: 18,gender: 'man'})

不推荐修改原型
改原型:let obj = Object.create(common)


Natcret
1 声望0 粉丝