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

js
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 key không phải là đối tượng hoặc symbol không được đăng ký.

Ví dụ

Sử dụng getOrInsert()

js
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

Tương thích trình duyệt

Xem thêm