لا شكر على واجب أخي. سؤال مهم متى نستمع هذه الخواص أظن أن الأمر يحتاج إلى أمثلة لتوضيح إستعمالات كل خاصية:
ال Set نستعملها عادة لتخزين قيم غير مكررة ذات أنواع مختلفة، بدائية (primitive) كانت أو كائنات (objects)
var set1 = new Set();
set1.add('a'); // ==> Set { 'a' }
set1.add(1); // ==> Set { 'a', 1 }
set1.add('1'); // ==> Set { 'a', 1, '1' }
// القيمة 1 أضيفت سابقا
set1.add(1); // ==> Set { 'a', 1, '1’ }
//يمكننا أيضا تخزين الكائنات
var obj1 = { prop1: 'Hello!' };
set1.add(obj1); // ==> Set { 'a', 1, '1', { prop1: 'Hello!' } }
ال WeakSet نستعملها عندما نحتاج فقط لتخزين كائنات (objects) غير مكررة ( لا يمكن تخزين قيم بدائية)
const ws = new WeakSet();
const foo = {};
const bar = {};
ws.add(foo);
ws.add(bar);
ws.has(foo); // true: موجود
ws.has(bar); // true: موجود
ws.delete(foo); // حذف foo
ws.has(foo); // false, غير موجود
ws.has(bar); // true, موجود
ال Map نستعملها لتخزين ثنائيات ( مفتاح + قيمة).
var map1 = new Map();
//القيمة قد تكون أولية مثل
//string
map1.set(1, 'hello'); // ==> Map { 1 => 'hello’ }
// القيمة قد تكون كائن
map1.set('jimmy', {x: 'y'}) // ==> Map { 1 => 'hello', 'jimmy' => { lastName: 'farrell' } }
// وقد تكون مجموعة
var arr1 = ['a', 'b'];
map1.set(arr1, [1, 2]); // ==> Map { 1 => 'hello', 'jimmy' => { x: 'y' }, [ 'a', 'b' ] => [ 1, 2 ] }
ال WeakMap أيضا نستعملها لتخزين ثنائيات ( مفتاح + قيمة) غير أن المفتاح يجب أن يكون كائنا (Object)