2016-05-30 13 views

Antwort

6

„Die Abbildung von weakmap/Schlüsselpaar Wert nur beobachtet werden kann oder von jemandem beeinflusst, die sowohl die weakmap und den Schlüssel hat. Mit clear(), jemand nur mit dem WeakMap würde sich in der Lage gewesen die WeakMap-und-Schlüssel-Wert-Zuordnung zu beeinflussen.“

Mark Miller

Der Grund für diese Einschränkung ist die Sicherheit Bedenken:

Eine Schlüsseleigenschaft von Weak Maps ist die Unfähigkeit, ihre Schlüssel aufzuzählen. Dies ist notwendig, um Angreifer daran zu hindern, das interne Verhalten anderer Systeme in der Umgebung zu beobachten, die schwach gemappte Objekte teilen. Wenn die Anzahl oder Namen von Elementen in der Auflistung aus der API erkennbar sind , selbst wenn die Werte nicht vorhanden sind, können WeakMap-Instanzen einen Nebenkanal erstellen, für den zuvor noch kein Kanal verfügbar war.

tc39wiki

A enumerable WeakMap möglicherweise auch GC beeinflussen könnte, da man dann indirekt den GC-Prozess beobachten kann. Daher wurde clear entfernt, um ein vorhersehbares Design zu gewährleisten.