ES8: الجديد في لغة JavaScript في عام 2017

ES8 مباشر! تم إصدار ES8 (يُطلق عليه أيضًا ES2017) في وقت سابق من هذا الصيف ، ويقدم طرقًا جديدة للترميز باستخدام JavaScript. دعنا نستكشفهم.

إذا كان لديك أحدث إصدار من Chrome ، فافتح وحدة التحكم ودعنا نبرمج معًا.

Object.values ​​()

الوصول إلى جميع قيم وجوهنا دون أي تعقيد. هذا مثال:

const countries = { BR: 'Brazil', DE: 'Germany', RO: 'Romania', US: 'United States of America'};
Object.values(countries); // ['Brazil', 'Germany', 'Romania', 'United States of America']

مداخل الكائن

اقلب سمة الكائن في مجموعة من السمات:

const countries = { BR: 'Brazil', DE: 'Germany', RO: 'Romania', US: 'United States of America'};
Object.entries(countries); 
// [['BR', 'Brazil'], ['DE', 'Germany'], ['RO', 'Romania'], ['US','United States of America']]

حشوة السلسلة (padStart and padEnd)

هذا يعيد السلسلة التي تم تمريرها مضيفا اللوحة والبداية أو في نهايتها. تعريف الوظيفة هو:

'string'.padStart(targetLength, padString)
'string'.padEnd(targetLength, padString)

يمكننا أن نجعل:

'0.10'.padStart(10); // it return a string of length 10, padding empty spaces in the beginning
'hi'.padStart(1); // 'hi''hi'.padStart(5); // ' hi''hi'.padStart(5, 'abcd'); // 'abchi''hi'.padStart(10, 'abcd'); // 'abcdabcdhi'
'loading'.padEnd(10, '.'); // 'loading...'
// useful example making things easier to read'0.10'.padStart(12); // ' 0.10''23.10'.padStart(12); // ' 23.10''12,330.10'.padStart(12); // ' 12,330.10'

Object.getOwnPropertyDescriptors ()

تقوم بإرجاع جميع واصفات الخصائص (غير الموروثة) الخاصة بكائن ما. سمات الكائن عودة يمكن أن يكون: value، writable، get، set، configurableو enumerable.

const obj = { name: 'Pablo', get foo() { return 42; }};
Object.getOwnPropertyDescriptors(obj);//// {// "name": {// "value": "Pablo",// "writable":true,// "enumerable":true,// "configurable":true// },// "foo":{// "enumerable":true,// "configurable":true,// "get": function foo()// "set": undefined// }// }

أحد الأمثلة العملية هو: JavaScript لديها طريقة لنسخ الخصائص Object.assign(). يقوم بنسخ الخاصية التي يكون مفتاحها key. مثله:

const value = source[key]; // gettarget[key] = value; // set

ويفشل في بعض الحالات لأنه لا ينسخ الخصائص ذات السمات غير الافتراضية بشكل صحيح مثل المحصلات والمحددات والخصائص غير القابلة للكتابة.

فمثلا:

const objTarget = {};const objSource = { set greet(name) { console.log('hey, ' + name); }};Object.assign(objTarget, objSource);
objTarget.greet = 'love'; // trying to set fails, sets greet = 'love'

حل:

const objTarget = {};const objSource = { set greet(name) { console.log('hey, ' + name); }};Object.defineProperties(objTarget, Object.getOwnPropertyDescriptors(objSource));
objTarget.greet = 'love'; // prints 'hey, love'

الفواصل اللاحقة في قوائم واستدعاءات معلمات الوظيفة

هذا تغيير في بناء الجملة. يسمح لنا بكتابة تصريح دالة صالح مع فاصلة في النهاية.

getDescription(name, age,) { ... }

وظائف غير متزامنة (غير متزامنة وتنتظر)

هذا يجعل العمل مع الوظائف غير المتزامنة أسهل بكثير:

function loadExternalContent() { return new Promise((resolve, reject) => { setTimeout(() => { resolve('hello'); }, 3000); });}
async function getContent() { const text = await loadExternalContent(); console.log(text);}
console.log('it will call function');getContent();console.log('it called function');
// it prints:
'it will call function' // synchronous'it called function' // synchronous'hello' // asynchronous (after 3 seconds)

الذاكرة المشتركة والذرات

حسب المواصفات:

"يتم الكشف عن الذاكرة المشتركة في شكل نوع SharedArrayBuffer الجديد ؛ يوفر كائن Atomics العالمي الجديد عمليات ذرية على مواقع الذاكرة المشتركة ، بما في ذلك العمليات التي يمكن استخدامها لإنشاء حظر أساسيات مزامنة."

هذا يعنى:

الذاكرة المشتركة: يمكننا السماح لخيوط متعددة بقراءة وكتابة نفس البيانات باستخدام SharedArrayBufferالمُنشئ الجديد .

Atomics: يمكننا استخدام Atomicsالكائن للتأكد من عدم مقاطعة أي شيء تتم كتابته أو قراءته في منتصف العملية. لذلك تنتهي العمليات قبل أن تبدأ العملية التالية.

إذا كنت قد استمتعت بهذا المقال ، فتأكد من أنه يعجبني كثيرًا من التصفيق - هل يعني العالم للكاتب؟ تابعوني إذا كنت ترغب في قراءة المزيد من المقالات حول الثقافة والتكنولوجيا والشركات الناشئة.

Flávio H. de Freitas هو رجل أعمال ومهندس ومحبي التكنولوجيا وحالم ومسافر. وقد عملت CTO في البرازيل ، وادي السليكون وأوروبا .