es5对象的键是字符串类型,对象的属性名都是字符串,而字符串是有可能会重复的。如果重复的话就会产生冲突。在ES2015版本中对象的键类型还可以是Symbol。

访问对象属性

  1. const obj = {
  2. info: 'wakaka',
  3. inner: {
  4. a: 10,
  5. b: 20
  6. },
  7. arr: [1, 2],
  8. sayHi: (name) => {
  9. console.log(`hi,${name}`)
  10. }
  11. }
  12. // 用 dot(点 .) 的方式访问
  13. console.log(obj.info) // wakaka
  14. console.log(obj.inner) // {"a":10,"b":20}
  15. console.log(obj.arr) // [1,2]
  16. obj.sayHi('dengke') // hi,dengke
  17. // 用 [] 的方式访问
  18. console.log(obj['info']) // wakaka
  19. console.log(obj['inner']) // {"a":10,"b":20}
  20. console.log(obj['arr']) // [1,2]
  21. obj['sayHi']('dengke') // hi,dengke

指定默认值

如果要访问的对象不存在,可以使用 逻辑运算符 || 指定默认值:
只要“||”前面为false,不管“||”后面是true还是false,都返回“||”后面的值。
只要“||”前面为true,不管“||”后面是true还是false,都返回“||”前面的值。

  1. console.log(obj.age || 18) // 18

javascript 运算(操作)符

动态属性

  1. const dynamic = 'flavour';
  2. var item = {
  3. name: 'Coke',
  4. [dynamic]: 'Cherry'
  5. }
  6. console.log(item);
  7. // { name: "Coke", flavour: "Cherry" }

属性不存在

当对象上没有这个键的时候,不会报错,而是赋值undefined
javascript 运算(操作)符

遍历对象

  1. var json = {
  2. j: '小明',
  3. birth: 1990,
  4. school: 'No.1 Middle School',
  5. height: 1.70,
  6. weight: 65,
  7. score: null
  8. };
  9. for (var j in json){
  10. console.log(j+":"+json.j); //获取json的属性j的值
  11. }
  12. for (var j in json){
  13. console.log(j+':'+json[j]); //遍历json的所有属性
  14. }

深拷贝

  1. const obj2 = JOSN.parse(JSON.stringify(obj1))