لست مضطراً لاستخدام جميع ميزات ES6 ، عملياً كل كود ES5 لا يزال يمكنك اعتباره كود ES6 صالح إلا إذا كنت تستخدم بعض أكواد ES6 المميزة ولكن لا تقلق بشأن ذلك
يمكن أن تمنع ES6 الكثير من الأخطاء وأن تجعل الكثير من الأشياء أسهل. لاحظ الكود التالي :
function Counter() {
this.items = {};
}
Counter.prototype.processItems = function processItems(items) {
items.forEach(function(item) {
this.items[item] = item in this.items ? 1 : this.items[item] + 1;
}, this);
};
var c = new Counter();
c.processItems(['foo', 'bar', 'zap', 'bar', 'zap']);
var keys = Object.keys(c.items);
var item;
for (var i = 0; i < keys.length; i++) {
item = c.items[keys[i]];
console.log(keys[i] + ': ' + item);
}
من الجدير بالذكر أن كائن ال Counter هذا فقط يعمل مع السلاسل المحرفية ، وجعله يعمل مع أي شيء آخر سيجعله غير فعال للغاية.
هنا نفس الشيء ، ولكن بلغة ES6 :
class Counter {
constructor() {
this.items = new Map();
}
processItems(items) {
items.forEach(item => {
const prev = this.items.get(item) || 0;
this.items.set(item, prev + 1);
});
}
}
const c = new Counter();
c.processItems(['foo', 1, false, 1, false]);
for (let [item, count] of c.items) {
console.log(`${item}: ${count}`);
}
نلاحظ في هذه الحالة أننا استخدمنا نفس الكمية من الأكواد ولكن الآن أصبح الكود أكثر نظافةً ووضوحاً وأقل كثافة وفعالية كما أنه يمكنك الاستغناء عن السلاسل المحرفية وبالتالي أصبح التنفيذ أسرع