در نسخههای اخیر JavaScript، یکی از ویژگیهای جالب و جدید
مثال:
این ویژگی به ویژه برای بهبود کارایی در مدیریت حافظه در برنامههای بزرگ و پیچیده بسیار مفید است.
WeakRefs (مراجع ضعیف) اضافه شده است. این ویژگی به شما اجازه میدهد تا به شیءهایی که به طور ضعیف نگهداری میشوند، ارجاع دهید. این یعنی وقتی تنها مراجع به یک شیء ضعیف باشند، آن شیء میتواند به راحتی جمعآوری شود و حافظه آزاد شود.مثال:
let obj = { name: 'Example' };
let weakRef = new WeakRef(obj);
// دسترسی به شیء:
let deref = weakRef.deref(); // اگر شیء هنوز وجود داشته باشد، آن را برمیگرداند
console.log(deref); // { name: 'Example' }
// اگر فقط مرجع ضعیف باقی بماند و شیء دیگر به آن ارجاع ندهد، آن شیء جمعآوری خواهد شد.
obj = null; // مقداردهی به null
// در اینجا اگر بخواهید دوباره deref کنید، ممکن است undefined برگردد
deref = weakRef.deref();
console.log(deref); // ممکن است undefined باشداین ویژگی به ویژه برای بهبود کارایی در مدیریت حافظه در برنامههای بزرگ و پیچیده بسیار مفید است.
CHALLENGE
const map = new Map();
const key1 = {};
const key2 = key1;
map.set(key1, "Value for key1");
map.set(key2, "Value for key2");
console.log(map.get({}));
console.log(map.get(key1));
SmartCode
CHALLENGE const map = new Map(); const key1 = {}; const key2 = key1; map.set(key1, "Value for key1"); map.set(key2, "Value for key2"); console.log(map.get({})); console.log(map.get(key1));
const numbers = [1, 2, 3, 4, 5];
const result = numbers.map(num => {
if (num === 3) {
return num * 2;
}
return num;
});
console.log(result);
CHALLENGE
const arr = [1, 2, 3];
const copy = [...arr];
copy.push(4);
console.log(arr);
console.log(copy);
CHALLENGE ❓
Number.prototype[Symbol.iterator] = function*() { yield *['a','b','c'] };
console.log([...1]);
🍓3⚡1🤓1