let
на каждой итерации создаётся окружение. for(var i = 0; i < 3; i++) {
let j = i; // доступна только на этой итерации в этом блоке
setTimeout(() => console.log(j), 0);
}
/*
0
1
2
*/
<canvas width="450" height="450"></canvas>
let am = {'8357':'m','5172':'m','3115':'f','5743':'f'};
const mf = { m: [], f: [] };
for (item of Object.entries(am)) {
mf[item[1]].push(item[0]);
}
if (mf.m.length !== mf.f.length) throw "Гендерный дисбаланс!";
const result = mf.m.reduce((acc, c, i) => (acc.push(c, mf.f[i]), acc), []);
// [ "5172", "3115", "8357", "5743" ]
highlight
— функция для подсветки. И есть пример, подсветка лейблов полей с ошибками:$("#myform").validate({
highlight: function(element, errorClass, validClass) {
$(element).addClass(errorClass).removeClass(validClass);
$(element.form).find("label[for=" + element.id + "]")
.addClass(errorClass);
},
unhighlight: function(element, errorClass, validClass) {
$(element).removeClass(errorClass).addClass(validClass);
$(element.form).find("label[for=" + element.id + "]")
.removeClass(errorClass);
}
});
desctructor()
в ECMAScript 6 не предусмотрено.class Menu {
static counter = 0;
constructor(name) {
this.name = name;
++Menu.counter;
}
}
menu1 = new Menu("меню1");
menu2 = new Menu("меню2");
menu3 = new Menu("меню3");
menu4 = new Menu("меню4");
delete menu1;
console.log(Menu.counter); // 4
window
. Тоже не лучший вариант, т.к. мало ли, где в коде содержатся ссылки на созданные объекты. Может, в анонимных функциях, вызванных по таймеру.let count = 0;
for (obj in this) { // в примере this === window
if (this[obj] instanceof Menu) ++count;
}
console.log(count); // 4