WeakMap.prototype.getOrInsert()
Baseline
2026
Newly available
Since February 2026, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
Phương thức getOrInsert() của các thực thể WeakMap trả về giá trị tương ứng với khóa được chỉ định trong WeakMap này. Nếu khóa không có mặt, nó chèn một mục mới với khóa và giá trị mặc định đã cho, và trả về giá trị được chèn vào.
Nếu việc tính toán giá trị mặc định tốn kém, hãy cân nhắc sử dụng WeakMap.prototype.getOrInsertComputed() thay thế, vì nó nhận một callback để tính giá trị mặc định chỉ khi thực sự cần thiết.
Try it
const map = new WeakMap([[window, "foo"]]);
console.log(map.getOrInsert(window, "default"));
// Expected output: "foo"
console.log(map.getOrInsert({}, "default"));
// Expected output: "default"
Cú pháp
getOrInsert(key, defaultValue)
Tham số
key-
Khóa của giá trị cần trả về từ đối tượng
WeakMap. Phải là một đối tượng hoặc một symbol không được đăng ký. Các khóa đối tượng được so sánh theo tham chiếu, không phải theo giá trị. defaultValue-
Giá trị cần chèn và trả về nếu khóa chưa có trong đối tượng
WeakMap.
Giá trị trả về
Giá trị được liên kết với khóa được chỉ định trong đối tượng WeakMap. Nếu không tìm thấy khóa, defaultValue được chèn và trả về.
Ngoại lệ
TypeError-
Được ném ra nếu
keykhông phải là đối tượng hoặc symbol không được đăng ký.
Ví dụ
>Sử dụng getOrInsert()
const wm = new WeakMap();
const obj = {};
console.log(wm.get(obj)); // undefined
console.log(wm.getOrInsert(obj, "default")); // "default"
console.log(wm.get(obj)); // "default"
console.log(wm.getOrInsert(obj, "another default")); // "default"
Đặc tả
| Specification |
|---|
| ECMAScript® 2027 Language Specification> # sec-weakmap.prototype.getorinsert> |