javascript中对象的解构赋值

const restaurant = {
  name: 'Classico Italiano',
  location: 'Via Angelo Tavanti 23, Firenze, Italy',
  categories: ['Italian', 'Pizzeria', 'Vegetarian', 'Organic'],
  starterMenu: ['Focaccia', 'Bruschetta', 'Garlic Bread', 'Caprese Salad'],
  mainMenu: ['Pizza', 'Pasta', 'Risotto'],

  openingHours: {
    thu: {
      open: 12,
      close: 22,
    },
    fri: {
      open: 11,
      close: 23,
    },
    sat: {
      open: 0, // Open 24 hours
      close: 24,
    },
  },
  order: function (starterIndex, mainIndex) {
    return [this.starterMenu[starterIndex], this.mainMenu[mainIndex]];
  },
};

正常的对象解构赋值

和顺序无关,只要变量名和对象中的属性名相同

const {openingHours,name,categories} = restaurant;
console.log(openingHours,name,categories);

修改变量名的解构赋值

const {openingHours:hours,name,categories:tags} = restaurant;
console.log(hours,name,tags);

设置默认值的解构赋值

const {menu=[],starterMenu:starters=[]} = restaurant;
console.log(menu,starters);

变量改值

let [a,b] = [1,2];
const obj = {a:23,b:99,c:0};
({a,b} = obj);

嵌套解构赋值

const {openingHours:hours} = restaurant;
const{fri:{open:o,close:c}} = hours;
console.log(o,c);

通过对象传递参数,可以不考虑顺序

const hello = function ({ name='boy', age=10 }) {
  console.log(`hello ${name},and you are ${age} years old!`);
};

hello({ age: 11, name: 'ben' });
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容