JS对象基本用法
目录
1. JS对象基本用法
1.1. JS对象
- 定义
- 无序数据集合
- 键值对
- 写法
let obj= {'name':'frank'}
let obj= new Object({'name':''frank})
console.log({'name':'frank'})
- 如果没有console.log,只是代码块
- 细节
- !!!键名是字符串,就算省略引号,还是字符串
- 省略的话,就只能写标识符/数字了,加引号可以用中文和emoji
Object.keys(obj)
打印键名[]
,可以使用变量,因为obj[a]=1234
,等于{[a]:1234}
,注意此时a是变量,a='name' object['name']
就是1234- Symbol也可以做属性名,不常用,学习迭代使用
- 对象的隐藏属性__proto__
- 储存共有属性组成的对象的地址
- 共有属性组成的对象:原型
1.2. 原型:
- 每个对象都有原型
- 原型存共有属性
- 对象的原型是一个对象
- 根对象的__proto__为nul
1.3. 对象的增删改查
1.3.1. 删除
- 方法
delete obj.xxx
delete obj\['xxx']
obj.xxx = undefined
,仅置空,不删除- delete删属性
- 判断是否删除/含有键名,或键值为空
'xxx' in obj === false
'xxx' in obj && obj.xxx === undefined
1.3.2. 查看
- 查看自身属性
Objects.keys(obj)
Objects.values(obj)
Objects.entries(obj)
- 查看自身+共有属性:只有查会沿着原型链查看
- 打印所有包括原型中的内容(共有属性):
console.dir(obj2)
- obj2.proto 不推荐
'name' in obj
- 打印所有包括原型中的内容(共有属性):
- 判断是否为自身属性
obj.hasOwnProperty('name')
'name' in obj
不能判断是否为自身的属性,会沿原型链查看
- 查看某一属性
obj['key']
obj.key
- !!!注意:
obj[key]
,变量key值一般不为’key’ - 前两种等价
obj.key
不等于obj[key]
let name='frank', obj\[name]=obj\['frank']
1.3.3. 修改/增加
- 直接赋值
- 查看的方式,直接赋值
- 批量赋值
Object.assign(obj,{p1:1,p2:2,p3:3})
,es6新api
- 增加或修改共有属性
- 读的时候可以读到
- 写的时候只能写到自己身上
- 偏要改
- 通过obj.proto.toString修改
- 不要使用__proto__
- 如果要改,用Object.prototype
- 一般不要改
- 原型链
var common={'国籍':'中国'}
Object.create(common,{name:{value:'frank'} } )
- 使用__proto__性能低(存疑,待细查)