[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/WeakSet [Back]  [Original]

WeakSet - JavaScript | MDN

MDN Web Docs

View in English Always switch to English

WeakSet

*

20159

*

WeakSet WeakSet WeakSet

WeakSet

Set

  • WeakSet Set

  • WeakSet WeakSet WeakSet

    WeakSet

WeakSet

js
//  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.constructor

WeakSet WeakSet

WeakSet.prototype[Symbol.toStringTag]

[Symbol.toStringTag] "WeakSet" Object.prototype.toString()

WeakSet.prototype.add()

value WeakSet

WeakSet.prototype.delete()

WeakSet value WeakSet.prototype.has(value) false

WeakSet.prototype.has()

value WeakSet

WeakSet

js
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


Web Proxy Viewer  |  New URL  |  Original Page