JavaScript виконання коду JavaScript підключення зовнішнього файлу JavaScript console.log JavaScript змінні і константи JavaScript типи даних JavaScript операції зі змінними JavaScript перетворення даних JavaScript масиви JavaScript умовні конструкції JavaScript цикли JavaScript функції JavaScript область видимості змінних JavaScript замикання і функції IIFE JavaScript Паттерн Модуль JavaScript рекурсивні функції JavaScript перевизначення функцій JavaScript hoisting JavaScript передача параметрів за значенням і за посиланням JavaScript стрілочні функції JavaScript ООП Object JavaScript ООП вкладені об'єкти і масиви в об'єктах JavaScript ООП перевірка наявності і перебір методів і властивостей JavaScript ООП об'єкти у функціях JavaScript ООП конструктори об'єктів JavaScript ООП розширення об'єктів. prototype JavaScript ООП інкапсуляція JavaScript ООП Функція як об'єкт. Методи call і apply JavaScript ООП спадкування JavaScript ООП Ключове слово this JavaScript ООП Object destructuring JavaScript ООП класи JavaScript ООП Date. Робота з датами JavaScript Об'єкт Math. математичні операції JavaScript Об'єкт Array. Робота з масивами JavaScript ООП об'єкт Number JavaScript String JavaScript String Об'єкт RegExp. Регулярні вирази JavaScript String Регулярні вирази в методах String JavaScript String Синтаксис регулярних виразів JavaScript Робота з браузером і BOM JavaScript діалогові вікна JavaScript Історія браузера. об'єкт history JavaScript об'єкт location JavaScript об'єкт navigator JavaScript таймери JavaScript DOM Введення JavaScript DOM Об'єкт document. Пошук елементів JavaScript DOM Властивості об'єкта document JavaScript DOM Об'єкт Node. Навігація по DOM JavaScript DOM Створення, додавання і видалення елементів веб-сторінки JavaScript DOM Об'єкт Element. управління елементами JavaScript DOM Зміна стилю елементів JavaScript події. Введення в обробку подій. JavaScript події обробники JavaScript події. об'єкт Event JavaScript події. поширення подій JavaScript події миші JavaScript події клавіатури JavaScript FORMS. Форми і їх елементи JavaScript FORMS. Кнопки JavaScript FORMS. текстові поля JavaScript FORMS. Прапорці та перемикачі JavaScript FORMS. Список select JavaScript JSON JavaScript зберігання даних. cookie JavaScript зберігання даних. Web Storage JavaScript Collection. Ітератори JavaScript Collection. Генератори JavaScript Collection. Множина Set JavaScript Collection. Map JavaScript Collection. WeakSet і WeakMap JavaScript AJAX. XMLHttpRequest JavaScript AJAX. Відправка даних JavaScript AJAX. Promise в Ajax-запитах

JavaScript Collection. WeakSet і WeakMap


WeakSet

Об'єкт WeakSet багато в чому схожий на звичайну множину. Він також може зберігати тільки унікальні значення, але кожен його елемент повинен представляти об'єкт.

Для створення об'єкта WeakSet використовується його конструктор, в який можна передати початкові значення:

// порожній WeakSet
let weakSet1 = new WeakSet();

// ініціалізація початковими значеннями
let weakSet2 = new WeakSet([{name:"Tom"}, {age: 34}]);

Для ініціалізації як у випадку з об'єктом Set в конструктор передається масив, але даний масив містить саме об'єкти, а не скалярні значення, типу чисел або рядків.

Для додавання даних в WeakSet застосовується метод add () :

let weakSet = new WeakSet();
weakSet.add({lang: "JavaScript"});
weakSet.add({lang: "TypeScript"});

// weakSet.add(34); // так неможа - 34 - число, а не объект

console.log(weakSet);   // {{lang: "JavaScript"}, {lang: "TypeScript"}}

Причому знову ж додати ми можемо тільки об'єкт, а не скалярні значення типу чисел або рядків.

Для видалення застосовується метод delete() , в який передається посилання на видаляючий об'єкт:

let weakSet = new WeakSet();
var js = {lang: "JavaScript"};
var ts = {lang: "TypeScript"};

weakSet.add(js);
weakSet.add(ts);
 
weakSet.delete(js);
 
console.log(weakSet);   // {{lang: "TypeScript"}}

Якщо треба перевірити, чи є об'єкт в WeakSet , то можна використовувати метод has() , який повертає true при наявності об'єкта:

var js = {lang: "JavaScript"};
var ts = {lang: "TypeScript"};
var java = {lang: "Java"};

let weakSet = new WeakSet([js, ts]);

console.log(weakSet.has(ts));       // true
console.log(weakSet.has(java));     //  false

WeakMap

WeakMap представляє розвиток колекції Map . Особливістю WeakMap є те, що всі її елементи повинні представляти об'єкти. При цьому об'єктами повинні бути як ключі, так і значення.

Створення WeakMap :

// порожній WeakMap
let weakMap1 = new WeakMap();
 
// WeakMap с ініціалізація даними
var key1 = {key:1};
var key2 = {key:2};
var value1 = {name: "Tom"};
var value2 = {name: "Sam"};
 
let weakMap2 = new WeakMap([[key1, value1], [key2, value2]]);

Для отримання об'єктів по ключу з WeakMap застосовується метод get () :

var key1 = {key:1};
var key2 = {key:2};
var value1 = {name: "Tom"};
var value2 = {name: "Sam"};
 
let weakMap2 = new WeakMap([[key1, value1], [key2, value2]]);
console.log(weakMap2.get(key1));    // {name: "Tom"}

Для додавання нових об'єктів або зміни старих застосовується метод set () :

var key1 = {key:1};
var key2 = {key:2};
var value1 = {name: "Tom"};
var value2 = {name: "Sam"};
 
let weakMap2 = new WeakMap([[key1, value1]]);
weakMap2.set(key2, value2);
weakMap2.set(key1, {name: "Kate"});
console.log(weakMap2.get(key1));    //{name: "Kate"}
console.log(weakMap2.get(key2));    //{name: "Sam"}

Щоб перевірити наявність елемента за певним ключом, застосовується метод has () , який повертає true при наявності елемента:

var key1 = {key:1},
    key2 = {key:2};
var value1 = {name: "Tom"},
    value2 = {name: "Sam"};
 
let weakMap2 = new WeakMap([[key1, value1]]);
console.log(weakMap2.has(key1));    // true
console.log(weakMap2.has(key2));    // false

Для видалення елемента по ключу застосовується метод delete () :

var key1 = {key:1},
    key2 = {key:2};
var value1 = {name: "Tom"},
    value2 = {name: "Sam"};
 
let weakMap2 = new WeakMap([[key1, value1], [key2, value2]]);
console.log(weakMap2.has(key1));    // true
weakMap2.delete(key1);
console.log(weakMap2.has(key1));    // false

Наш партнер:
beta test mp3 playlist downloader