es5对象的键是字符串类型,对象的属性名都是字符串,而字符串是有可能会重复的。如果重复的话就会产生冲突。在ES2015版本中对象的键类型还可以是Symbol。
访问对象属性
const obj = {info: 'wakaka',inner: {a: 10,b: 20},arr: [1, 2],sayHi: (name) => {console.log(`hi,${name}`)}}// 用 dot(点 .) 的方式访问console.log(obj.info) // wakakaconsole.log(obj.inner) // {"a":10,"b":20}console.log(obj.arr) // [1,2]obj.sayHi('dengke') // hi,dengke// 用 [] 的方式访问console.log(obj['info']) // wakakaconsole.log(obj['inner']) // {"a":10,"b":20}console.log(obj['arr']) // [1,2]obj['sayHi']('dengke') // hi,dengke
指定默认值
如果要访问的对象不存在,可以使用 逻辑运算符 || 指定默认值:
只要“||”前面为false,不管“||”后面是true还是false,都返回“||”后面的值。
只要“||”前面为true,不管“||”后面是true还是false,都返回“||”前面的值。
console.log(obj.age || 18) // 18
动态属性
const dynamic = 'flavour';var item = {name: 'Coke',[dynamic]: 'Cherry'}console.log(item);// { name: "Coke", flavour: "Cherry" }
属性不存在
当对象上没有这个键的时候,不会报错,而是赋值undefined
javascript 运算(操作)符
遍历对象
var json = {j: '小明',birth: 1990,school: 'No.1 Middle School',height: 1.70,weight: 65,score: null};for (var j in json){console.log(j+":"+json.j); //获取json的属性j的值}for (var j in json){console.log(j+':'+json[j]); //遍历json的所有属性}
深拷贝
const obj2 = JOSN.parse(JSON.stringify(obj1))
