object获取的两种方式:
  data() {return {abj: {aa: {A: '1'}}}},created() {console.log(this.abj.aa)    //第一种console.log(this.abj["aa"])    //第二种},
Object.keys使用/解构赋值:
    return {footList: [],abj: {aa: {A: '12',AA:'22'},bb: {B: '1'}},ABJ:[100,200,300]}},created() {this.deepCopy()//Object.keys返回值是数组console.log(Object.keys(this.abj))    //参数为对象时 返回值是数组,存放的是对象key//['aa','b']console.log(Object.keys(this.ABJ))    //参数为数组时 返回值是数组,存放的是数组索引,和用for in遍历数组的顺序一样//['0','1','2']for (const BB in this.ABJ){console.log(BB)   //0//1//2}},
解构赋值与扩展运算符:
this.obj 和 {...this.obj} 区别
  data() {return {A: {AA: 'ytyt1',BB: 'ytyt2',CC: 'ytyt3',}}},created() {console.log(this.A)console.log({...this.A})   },
基本使用方法:
  data() {return {A: {AA: 'ytyt1',BB: 'ytyt2',CC: 'ytyt3',},ABJ: [100, 200, 300]}},created() {console.log(...this.ABJ)      //100 200 300console.log([...this.ABJ])   //[100, 200, 300]// 仅提取 BB 作为变量let {BB} = {...this.A}console.log(BB)      //ytyt2// CC = 名为 CC 的属性// rest = 存有剩余属性的对象let {CC, ...rest} = this.A;console.log(CC)   //ytyt3console.log(rest)   //{AA: 'ytyt1', BB: 'ytyt2'}// 把一个属性赋值给另一个名字的变量// 冒号表示“什么值:赋值给谁”// 解构赋值都可以设置默认属性  {BB: b = 2} let {BB: b} = {...this.A}console.log(b)// 数组解构let [DD] = [...this.ABJ]console.log(DD)   // 从数组第一个开始赋值,所以DD值为100},