JS 对象基本用法
定义
- 无需的数据集合
- 键值对的集合
如何声明
- 字面量
let i = {}
- 使用 Object 构造函数
let i = new Object()
- 字面量
值得注意的细节
- 键名是字符串,不是标志符,可以包含任意字符
- 引号可以省略,省略之后只可以写标志符
- 即便是省略之后键名也还是字符串
- 除了字符串之外,symbol 也能做属性名,一般用在迭代上,目前比较少见
变量的值做属性名
- 使用[变量]就会使用使用变量的值作为键值,如果变量值是除 symbol 意外的其他类型,则会自动变成字符串
删属性
- delete obj.xxx 或 delete obj[‘xxx’] 注意与 obj.xxx = undefined 的区别,后者只是将值设置为 undefined,而键名还在
读属性
- 查看自身所有属性:Object.keys(obj)
- 查看自身所有值:Object.values(obj)
- 查看自生加共有属性:
- console.dir(obj)
- 或者使用自己用 Object.keys()打印 proto
- 判断一个属性是自有的还是共有的
- obj.hasOwnProperty(‘tostring’),注意与’name’ in obj 的区别,后者判断对象中是否由属性时,若自身没有,在原型中找到也是返回 true,而前者只有自身有才返回 true
查属性
- 两种方法
- 中括号语法:obj[‘key’]
- 点语法:obj.key
- 两种方法
修改或者增加属性
- 直接赋值
- 批量赋值
- object.assign(),例如 Object.assign(obj, {age: 18, gender: ‘man’})
- 修改原型对象
- Object.prototype.toString = ‘xxx’ ,一般来说,不要修改原型,会引起很多问题
- 替换原型对象
- 推荐使用 Object.create 不推荐直接修改 proto,例如
let obj = Object.create(common)
- 推荐使用 Object.create 不推荐直接修改 proto,例如
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!