|
1 |
| -Let's store read messages in `WeakSet`: |
| 1 | +Lass uns gelesene Nachrichten in `WeakSet` speichern: |
2 | 2 |
|
3 | 3 | ```js run
|
4 | 4 | let messages = [
|
5 |
| - {text: "Hello", from: "John"}, |
6 |
| - {text: "How goes?", from: "John"}, |
7 |
| - {text: "See you soon", from: "Alice"} |
| 5 | + {text: "Hallo", from: "John"}, |
| 6 | + {text: "Wie läuft's?", from: "John"}, |
| 7 | + {text: "Bis bald", from: "Alice"} |
8 | 8 | ];
|
9 | 9 |
|
10 | 10 | let readMessages = new WeakSet();
|
11 | 11 |
|
12 |
| -// two messages have been read |
| 12 | +// Zwei Nachrichten wurden gelesen |
13 | 13 | readMessages.add(messages[0]);
|
14 | 14 | readMessages.add(messages[1]);
|
15 |
| -// readMessages has 2 elements |
| 15 | +// readMessages hat 2 Elemente |
16 | 16 |
|
17 |
| -// ...let's read the first message again! |
| 17 | +// ...lass uns die erste Nachricht nochmal lesen! |
18 | 18 | readMessages.add(messages[0]);
|
19 |
| -// readMessages still has 2 unique elements |
| 19 | +// readMessages hat immer noch 2 einzigartige Elemente |
20 | 20 |
|
21 |
| -// answer: was the message[0] read? |
22 |
| -alert("Read message 0: " + readMessages.has(messages[0])); // true |
| 21 | +// Antwort: Wurde die Nachricht[0] gelesen? |
| 22 | +alert("Gelesene Nachricht 0: " + readMessages.has(messages[0])); // true |
23 | 23 |
|
24 | 24 | messages.shift();
|
25 |
| -// now readMessages has 1 element (technically memory may be cleaned later) |
| 25 | +// jetzt hat readMessages 1 Element (technisch gesehen, könnte der Speicher später bereinigt werden) |
26 | 26 | ```
|
27 | 27 |
|
28 |
| -The `WeakSet` allows to store a set of messages and easily check for the existence of a message in it. |
| 28 | +Das `WeakSet` ermöglicht es, eine Menge von Nachrichten zu speichern und einfach zu überprüfen, ob eine Nachricht darin existiert. |
29 | 29 |
|
30 |
| -It cleans up itself automatically. The tradeoff is that we can't iterate over it, can't get "all read messages" from it directly. But we can do it by iterating over all messages and filtering those that are in the set. |
| 30 | +Es bereinigt sich automatisch. Der Kompromiss ist, dass wir nicht darüber iterieren können, d.h. wir können nicht "alle gelesenen Nachrichten" direkt erhalten. Aber wir können dies erreichen, indem wir über alle Nachrichten iterieren und diejenigen aussortieren, die nicht im Set sind. |
31 | 31 |
|
32 |
| -Another, different solution could be to add a property like `message.isRead=true` to a message after it's read. As messages objects are managed by another code, that's generally discouraged, but we can use a symbolic property to avoid conflicts. |
| 32 | +Eine andere, unterschiedliche Lösung könnte sein, einer Nachricht eine Eigenschaft wie `message.isRead=true` hinzuzufügen, nachdem sie gelesen wurde. Da Nachrichtenobjekte von anderem Code verwaltet werden, ist das allgemein nicht empfohlen, aber wir können eine symbolische Eigenschaft verwenden, um Konflikte zu vermeiden. |
33 | 33 |
|
34 |
| -Like this: |
| 34 | +So wie hier: |
35 | 35 | ```js
|
36 |
| -// the symbolic property is only known to our code |
| 36 | +// die symbolische Eigenschaft ist nur unserem Code bekannt |
37 | 37 | let isRead = Symbol("isRead");
|
38 | 38 | messages[0][isRead] = true;
|
39 | 39 | ```
|
40 | 40 |
|
41 |
| -Now third-party code probably won't see our extra property. |
| 41 | +Jetzt wird Code von dritten unsere zusätzliche Eigenschaft wahrscheinlich nicht sehen. |
42 | 42 |
|
43 |
| -Although symbols allow to lower the probability of problems, using `WeakSet` is better from the architectural point of view. |
| 43 | +Obwohl Symbole die Wahrscheinlichkeit von Problemen verringern, ist die Verwendung von `WeakSet` aus architektonischer Sicht besser. |
0 commit comments