1. 对象
- 无序的数据集合,由若干个“键值对”(属性: 值)构成
- { key: value } 是 JS 对象字面量写法
- { ‘age’: 5 } 等价于 { age: 5 }
``javascript let obj = { name: '刘德华', age: 60, sayHello: function() { console.log(
Hello${this.name}`) } }
console.log(obj.name) // “刘德华” console.log(obj[‘name’]) // “刘德华” obj.sayHello() // “Hello刘德华”
let key = ‘name’ console.log(obj[key]) // “刘德华” console.log(obj.key) // undefined obj.gender = ‘男’ // 添加属性
// 遍历对象属性 for(let key in obj) { console.log(key) console.log(obj[key]) }
// 什么时候必须使用[‘属性名’]的方式? // 1. 属性名包含特殊字符 // 2. 变量名不确定
let obj = {} // 给obj添加一个属性 content-type: text/json // 错误写法:obj.content-type = ‘text/json’ obj[‘content-type’] = ‘text/json’ console.log(obj[‘content-type’])
let propName = ‘myAge’ let value = 18
obj.propName = value console.log(obj.myAge) // undefined
obj[propName] = value console.log(obj.myAge) // 18
- 对象属性变为数组
- 删除属性
```javascript
// Object.keys()将对象属性变为数组
// 过滤出对象属性值为字符串的所有属性
let obj = {
name: '刘德华',
age: 50,
gender: '男'
}
let arr = Object.keys(obj).filter(key => typeof obj[key] === 'string')
console.log(arr) // ["name", "gender"]
。
// 删除属性
delete obj.age
console.log(obj.age) // undefined
2. JSON
JSON格式
- 是什么
- 一种用于数据交换的文本格式,在很多配置文件里能看到 xxx.json
- 格式
- 复合类型的值只能是数组或对象,不能是函数、正则表达式对象、日期对象
- 简单类型的值只有四种:字符串、数值(必须以十进制表示)、布尔值和null(不能使用NaN, Infinity, -Infinity和 undefined)
- 字符串必须使用双引号表示,不能使用单引号
- 对象的键名必须放在双引号里面
- 数组或对象最后一个成员的后面,不能加逗号。
JS内置对象
- JSON.stringify()
- 用于把一个值变成符合JSON格式的字符串
- JSON.parse()
- 用于把一个符合JSON格式的字符串还原对象 ```javascript let obj = { name: ‘刘德华’, age: 50, gender: ‘男’ }
let str = JSON.stringify(obj) console.log(str) // “{“name”:”刘德华”,”age”:50,”gender”:”男”}”
let newObj = JSON.parse(str) console.log(newObj) ```
JavaScript 对象 vs. JSON
- JavaScript 对象的字面量写法只是长的像 JSON 格式数据,二者属于不同的范畴
- JavaScript 对象中很多类型(函数、正则、Date) JSON格式的规范并不支持
- JavaScript 对象的字面量写法更宽松。