
در این آموزش ، با Syntax جدید تعریف Enhanced object literal آشنا می شویم که بسیار کد ما را خواناتر و منعطف تر می کند.
یکی از مشهورترین pattern ها برای ایجاد objects در جاوا اسکریپت(javascript) Enhanced object literal است.
function createMachine(name, status) { return { name: name, status: status }; }
تابع ()createMachine دو تا arguments به نام های name و status می گیرد و یک object literal یا دو تا properties به نام های name و status برمی گرداند.properties های name و status مقادیر خودشون رو از پارامترهای name و status می گیرد.این syntax به نظر اضافی است زیرا name و status دو بار برای name و value تکرار شده اند.
ویژگی جدید ES6 به شما این امکان را می دهد که وقتی property یک property با نام local variable یکسان است ، نام آن را بدون colon و value حذف کنید.
برای مثال شما می توانید تابع ()createMachine را در ES6 به شکل زیر بازنویسی کنید:
function createMachine(name, status) { return { name, status }; }
هنگامی که property یک object literal فقط نام دارد ، موتور جاوا اسکریپت متغیری با همان نام را درsurrounding scope جستجو می کند. اگر موتور جاوا اسکریپت بتواند یکی را پیدا کند ، مقدار متغیر را به property اختصاص می دهد.
به طور مشابه ، می توانید یک object literal را از م local variables بسازید که در مثال زیر نشان داده شده است:
let name = 'Computer', status = 'On'; let machine = { name, status };
برای جا افتادن بیشتر این مفهوم به یک مثال دیگر توجه کنید:
const openingHours = { thu: { open: 12, close: 22, }, fri: { open: 11, close: 23, }, sat: { open: 0, close: 24, }, }; const restaurant = { nameRestaurant: '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, }