| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/WeakSet | [Back] [Original] |
Get to know MDN better
WeakSet Set
WeakSet WeakSet WeakSet
WeakSet
WeakSet
// subject
function execRecursively(fn, subject, _refs = new WeakSet()) {
//
if (_refs.has(subject)) {
return;
}
fn(subject);
if (typeof subject === "object") {
_refs.add(subject);
for (const key in subject) {
execRecursively(fn, subject[key], _refs);
}
}
}
const foo = {
foo: "Foo",
bar: {
bar: "Bar",
},
};
foo.bar.baz = foo; //
execRecursively((obj) => console.log(obj), foo);
WeakSet _refs
WeakSet Set
WeakSet() WeakSet
WeakSet.prototype WeakSet
WeakSet.prototype.add() value WeakSet
WeakSet.prototype.delete() WeakSet value WeakSet.prototype.has(value) false
WeakSet.prototype.has() value WeakSet
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); // set foo
ws.has(foo); // falsefoo
ws.has(bar); // truebar
foo !== bar
| ECMAScript 2027 LanguageSpecification # sec-weakset-objects |
WeakSetObject/FunctionObject.prototype.__defineGetter__()Object.prototype.__defineSetter__()Object.prototype.__lookupGetter__()Object.prototype.__lookupSetter__()Object.prototype.hasOwnProperty()Object.prototype.isPrototypeOf()Object.prototype.propertyIsEnumerable()Object.prototype.toLocaleString()Object.prototype.toString()Object.prototype.valueOf()| Web Proxy Viewer | New URL | Original Page |