WeakSet.prototype.add()
åºçº¿
广æ³å¯ç¨
èª 2015å¹´9æ èµ·ï¼æ¤ç¹æ§å·²å¨ä¸»æµæµè§å¨ä¸å¾å°æ¯æï¼å¯å¨å¤§å¤æ°è®¾å¤åæµè§å¨çæ¬ä¸æ£å¸¸ä½¿ç¨ã
WeakSet å®ä¾ç add() æ¹æ³å¨è¯¥ WeakSet å¯¹è±¡çæ«å°¾è¿½å ä¸ä¸ªæ°ç对象ã
å°è¯ä¸ä¸
const weakset1 = new WeakSet();
const object1 = {};
weakset1.add(object1);
console.log(weakset1.has(object1));
// Expected output: true
try {
weakset1.add(1);
} catch (error) {
console.log(error);
// Expected output (Chrome): TypeError: Invalid value used in weak set
// Expected output (Firefox): TypeError: WeakSet value must be an object, got 1
// Expected output (Safari): TypeError: Attempted to add a non-object key to a WeakSet
}
è¯æ³
js
add(value)
åæ°
value-
å¿ é¡»æ¯å¯¹è±¡æéå ¨å±æ³¨åç符å·ãå°è¦æ·»å å°
WeakSetéåä¸çå¼ã
è¿åå¼
该 WeakSet 对象ã
å¼å¸¸
TypeError-
妿
value䏿¯ä¸ä¸ªå¯¹è±¡æéå ¨å±æ³¨åç符å·ï¼åæåºè¯¥å¼å¸¸ã
示ä¾
>ä½¿ç¨ add
js
const ws = new WeakSet();
ws.add(window); // å° window 对象添å å° WeakSet
ws.has(window); // true
// WeakSet åªæ¥å对象ä½ä¸ºåæ°
ws.add(1);
// Chrome ä¸çç»æï¼âTypeError: Invalid value used in weak setâ
// Firefox ä¸çç»æï¼âTypeError: 1 is not a non-null objectâ
è§è
| è§è |
|---|
| ECMAScript® 2027 Language Specification> # sec-weakset.prototype.add> |