对象的语法
7种数据类型
- number
- string
- symbol
- bool
- null
- undefined
- object
五个falsy值
- null
- undefined
- NaN
- 0
- ''(空字符串)
对象object(第七种数据类型,唯一一种复杂类型)
定义
无序的数据集合 键值对的集合,name和age是键,frank和18是值;
写法
- let obj = {'name': 'frank','age':18},简单写法常用
- let obj = new Object({'name':'frank'}),正规写法
- console.log({'name':'frank,age:18'}) 无论加不加单引号,name和age只能是字符串 name是属性名(key),frank是属性值(value),
若想用变量的值,则需要加[]中括号,
变量作属性名
之前都是用常量做属性名 let p1 = 'name' let obj = {p1:'frank'},属性名为'p1' let obj = {[p1]:'frank'},这样写,属性名为'name'
对比
不加[]的属性名会自动变成字符串; 加了[],则会当作变量求值;
对象的隐藏属性
JS中每一个对象,都有一个隐藏属性; 这个隐藏属性储存着共有属性组成的对象的地址 这个共有属性组成的对象叫做原型 也就是隐藏属性储存着原型的地址 代码示例 var obj = {}
删除属性
- obj.nam e= undefined *name的属性名在,但是属性为undefined;
- delete obj.namename的属性名和值都被删除
delete obj.xxx 或 delete obj ['xxx'] 即可删除obj的xxx属性; 请区分[属性值为 undefined] 和 [不含属性名]
不含属性名
'xxx' in obj === false
含有属性名,但是值为undefined
'xxx' in obj && obj.xxx===undefined 注意obj.xxx===undefined 不能断定'xxx'是否为obj的属性
读属性
查看自身属性
let obj2 = {'name': 'frank','age':18}
- objects.keys(obj2)得出(2)["name","age"]
- objects.values(obj2)得出(2)["frank","18"]
- obj2得出['name': 'frank','age':18]
- obj.entries(obj2)(2)[Array(2),Array(2),]
- obj['name']得出"frank"(只查看一个属性的值)
- obj.name得出"frank"(只查看一个属性的值)
- obj['na'+'me']
查看共有属性
- console.dir(obj2)
- obj2.proto(此法不推荐)
判断一个属性是自身的还是共有的
obj.hasOwnProperty('toString') 若是name自身的,则为true; 若是toString,则为false
原型
原型也是对象
修改或增加属性
单个直接添加法:obj.gender = '男' 多个添加法:Object.assign(obj,{p1:1,p2:2,p3:3,p4:4})