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

  1. - 对象属性变为数组
  2. - 删除属性
  3. ```javascript
  4. // Object.keys()将对象属性变为数组
  5. // 过滤出对象属性值为字符串的所有属性
  6. let obj = {
  7. name: '刘德华',
  8. age: 50,
  9. gender: '男'
  10. }
  11. let arr = Object.keys(obj).filter(key => typeof obj[key] === 'string')
  12. console.log(arr) // ["name", "gender"]
  13. // 删除属性
  14. delete obj.age
  15. console.log(obj.age) // undefined

2. JSON

JSON格式

  • 是什么
    • 一种用于数据交换的文本格式,在很多配置文件里能看到 xxx.json
  • 格式
    • 复合类型的值只能是数组或对象,不能是函数、正则表达式对象、日期对象
    • 简单类型的值只有四种:字符串、数值(必须以十进制表示)、布尔值和null(不能使用NaN, Infinity, -Infinity和 undefined)
    • 字符串必须使用双引号表示,不能使用单引号
    • 对象的键名必须放在双引号里面
    • 数组或对象最后一个成员的后面,不能加逗号。

image.png
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 对象的字面量写法更宽松。