object是第七种数据类型,唯一一种复杂类型
声明
最常用的简单写法
let obj = {'name': 'frank', 'age': 18}obj.name = 'frank' //name是字符串
obj.['name'] = 'frank'
细节
- 键名是字符串,不是标识符,可以包含任意字符
- 引号可省略,省略之后就只能写标识符
- 就算引号省略了,键名也还是字符串
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'})
【JS对象增删改查】不推荐修改原型
改原型:let obj = Object.create(common)
推荐阅读
- 盘口搭建源码时飞鸟系统JavaScript是如何在微投后台工作的
- Typescript — Type Guard、Narrowing 知多少
- 【开发日记】Nacos安装踩坑日记
- 如何实现一个能精确同步滚动的Markdown编辑器
- Wallys-QCA9880 /802.11ac Dual band /3x3 2.4G/5G FCC/CE/IC
- 前端使用xlsx.js导入导出excel并展示
- 前端知识库
- 【开发日记】MongoDB学习日记
- JS json数据导出为Excel(单表头、不设置样式)