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

WeakSet - JavaScript | MDN

MDN Web Docs

View in English Always switch to English

WeakSet

Baseline *

20159

*

WeakSet WeakSet 1 WeakSet

WeakSet

Set

  • WeakSet Set

  • WeakSet WeakSet

    : WeakSets

Set SameValueZero === WeakSet

WeakSet()

WeakSet

WeakSet.prototype WeakSet

WeakSet.prototype.constructor

WeakSet WeakSet

WeakSet.prototype[Symbol.toStringTag]

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

WeakSet.prototype.add()

WeakSet.prototype.delete()

WeakSet.prototype.has()

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); // foo 
ws.has(foo); // false, foo 
ws.has(bar); // true, bar 

foo !== bar

WeakSet

js
// 
function execRecursively(fn, subject, _refs = new WeakSet()) {
  // 
  if (_refs.has(subject)) {
    return;
  }

  fn(subject);
  if (typeof subject === "object" && subject) {
    _refs.add(subject);
    for (const key in subject) {
      execRecursively(fn, subject[key], _refs);
    }
    _refs.delete(subject);
  }
}

const foo = {
  foo: "Foo",
  bar: {
    bar: "Bar",
  },
};

foo.bar.baz = foo; // Circular reference!
execRecursively((obj) => console.log(obj), foo);

WeakSet _refs

WeakSet Set

ECMAScript 2027 LanguageSpecification
# sec-weakset-objects


Web Proxy Viewer  |  New URL  |  Original Page