ECMAScript 6: для чего нужен WeakSet?

WeakSet должен хранить элементы по слабой ссылке. То есть, если на объект не ссылается что-либо еще, его следует очистить от WeakSet.

Я написал следующий тест:

var weakset = new WeakSet(),
    numbers = [1, 2, 3];

weakset.add(numbers);
weakset.add({name: "Charlie"});

console.log(weakset);

numbers = undefined;

console.log(weakset);

Хотя мой[1, 2, 3] На массив ничего не ссылается, он не удаляется из WeakSet. Консоль печатает:

WeakSet {[1, 2, 3], Object {name: "Charlie"}}
WeakSet {[1, 2, 3], Object {name: "Charlie"}}

Это почему?

Плюс у меня есть еще один вопрос. Какой смысл добавлять объекты в WeakSets напрямую, например так:

weakset.add({name: "Charlie"});

Это глюки Traceur или я что-то упустил?

И, наконец, каково практическое использование WeakSet, если мы не можем ни перебрать его, ни получить текущий размер?

Ответы на вопрос(6)

Ваш ответ на вопрос