一、JS的对象
- 定义:无序的数据集合,键值对的集合
- 写法:
-
let obj = { 'name': 'frank', 'age': 18 } -
let obj = new Object({'name': 'frank'}) -
console.log({ 'name': 'frank, 'age': 18 })
- 注意:
- 键名是字符串,不是标识符,可以包含任意字符;
- 引号可省略,省略之后就只能写标识符;
- 就算引号省略了,键名也还是字符串;
二、如何删除对象的属性
- delete obj.xxx 或 delete obj['xxx']即可删除 obj 的 xxx 属性;
三、如何查看对象的属性
- 中括号语法:obj['key']
- 点语法:obj.key
四、 如何修改或增加对象的属性
- 直接赋值:
- let obj = {name: 'frank'} // name 是字符串
- obj.name = 'frank' // name 是字符串
- obj['name'] = 'frank'
- obj['na'+'me'] = 'frank'
- let key = 'name'; obj[key] = 'frank'
- 批量赋值
Object.assign(obj, {age: 18, gender: 'man'})
- 修改或增加共有属性
- 无法通过自身修改或增加共有属性,但如果就是要修改或增加原型上的属性:
- obj._ _ proto_ _ .toString = 'xxx'
- Object.prototype.toString = 'xxx' (更推荐使用)
- 一般来说,不要修改原型,会引起很多问题,最好创建时就改好,别后来才改;
五、'name' in obj和obj.hasOwnProperty('name') 的区别
- 不含属性名 'xxx' in obj === false
- 判断一个属性是自身的还是共有的 obj.hasOwnProperty('toString')