Join GitHub today
GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together.
Sign upGitHub is where the world builds software
Millions of developers and companies build, ship, and maintain their software on GitHub — the largest and most advanced development platform in the world.
Symbol type #34
Symbol type #34
Conversation
|
|
||
| ````warn header="Symbols don't auto-convert to a string" | ||
| Most values in JavaScript support implicit conversion to a string. For instance, we can `alert` almost any value, and it will work. Symbols are special. They don't auto-convert. | ||
| ````warn header="Symbole konertieren sich nicht automatisch zu einem String" |
1H0
May 21, 2020
Member
| ````warn header="Symbole konertieren sich nicht automatisch zu einem String" | |
| ````warn header="Symbole konvertieren sich nicht automatisch zu einem String" |
| ````warn header="Symbols don't auto-convert to a string" | ||
| Most values in JavaScript support implicit conversion to a string. For instance, we can `alert` almost any value, and it will work. Symbols are special. They don't auto-convert. | ||
| ````warn header="Symbole konertieren sich nicht automatisch zu einem String" | ||
| Die meisten Werte in JavaScript unterstützen eine impizite Konvertierung in einen String. Zum Beispiel können wir beinahe jeden Wert mit `alert` ausgeben, und es wird funktionieren. Diese konvertieren nicht automatisch. |
1H0
May 21, 2020
Member
| Die meisten Werte in JavaScript unterstützen eine impizite Konvertierung in einen String. Zum Beispiel können wir beinahe jeden Wert mit `alert` ausgeben, und es wird funktionieren. Diese konvertieren nicht automatisch. | |
| Die meisten Werte in JavaScript unterstützen eine implizite Konvertierung in einen String. Zum Beispiel können wir beinahe jeden Wert mit `alert` ausgeben, und es wird funktionieren. Diese konvertieren nicht automatisch. |
| @@ -50,17 +50,17 @@ alert(id); // TypeError: Cannot convert a Symbol value to a string | |||
| */!* | |||
| ``` | |||
| That's a "language guard" against messing up, because strings and symbols are fundamentally different and should not accidentally convert one into another. | |||
| Das ist ein "Sprachwächter" der davor behütet Mist zu bauen, da Strings und Symbole fundamental unterschiedlich sind und nicht versehentlich einer zum anderen konvertiert werden soll. | |||
1H0
May 21, 2020
Member
| Das ist ein "Sprachwächter" der davor behütet Mist zu bauen, da Strings und Symbole fundamental unterschiedlich sind und nicht versehentlich einer zum anderen konvertiert werden soll. | |
| Das ist ein "Sprachwächter" der davor behütet Mist zu bauen, da Strings und Symbole grundlegend unterschiedlich sind und nicht versehentlich einer zum anderen konvertiert werden soll. |
| user.id = "Our id value"; | ||
| // ...Another script also wants "id" for its purposes... | ||
| // ... ein weiteres Skript will "id" auf für seine Zwecke... |
1H0
May 21, 2020
Member
| // ... ein weiteres Skript will "id" auf für seine Zwecke... | |
| // ... ein weiteres Skript will "id" für seine Zwecke verwenden... |
| @@ -176,102 +175,103 @@ let clone = Object.assign({}, user); | |||
| alert( clone[id] ); // 123 | |||
| ``` | |||
|
|
|||
| There's no paradox here. That's by design. The idea is that when we clone an object or merge objects, we usually want *all* properties to be copied (including symbols like `id`). | |||
| Es gibt nix paradoxes hier. Das ist so vorgesehen. Die Idee dahinter ist, dass wenn wir ein Objekt klonen oder Objekte zusammenführen, wir für gewöhnlich *alle* Properties kopiert haben möchten (was Symbole wie `id` miteinbezieht). | |||
1H0
May 21, 2020
Member
| Es gibt nix paradoxes hier. Das ist so vorgesehen. Die Idee dahinter ist, dass wenn wir ein Objekt klonen oder Objekte zusammenführen, wir für gewöhnlich *alle* Properties kopiert haben möchten (was Symbole wie `id` miteinbezieht). | |
| Es gibt nichts paradoxes hier. Das ist so vorgesehen. Die Idee dahinter ist, dass wenn wir ein Objekt klonen oder Objekte zusammenführen, wir für gewöhnlich *alle* Properties kopiert haben möchten (was Symbole wie `id` miteinbezieht). |
| alert( id === idAgain ); // true | ||
| ``` | ||
|
|
||
| Symbols inside the registry are called *global symbols*. If we want an application-wide symbol, accessible everywhere in the code -- that's what they are for. | ||
| Symbole innerhalb des Register nennen sich *globale Symbole*. Wenn wir ein für die ganze Applikation gültiges Symbol wollen, auf das überall vom Code aus zugegriffen werden kann, dann nutzt man diese. |
1H0
May 21, 2020
Member
| Symbole innerhalb des Register nennen sich *globale Symbole*. Wenn wir ein für die ganze Applikation gültiges Symbol wollen, auf das überall vom Code aus zugegriffen werden kann, dann nutzt man diese. | |
| Symbole innerhalb des Register nennen sich *globale Symbole*. Wenn wir ein für die ganze Applikation gültiges Symbol wollen, auf das von überall vom Code aus zugegriffen werden kann, dann nutzt man diese. |
| let sym = Symbol.for("name"); | ||
| let sym2 = Symbol.for("id"); | ||
| // get name by symbol | ||
| // man erhält den Namen durchs Symbol |
1H0
May 21, 2020
Member
| // man erhält den Namen durchs Symbol | |
| // man erhält den Namen durch das Symbol |
|
|
||
| There exist many "system" symbols that JavaScript uses internally, and we can use them to fine-tune various aspects of our objects. | ||
| Es existieren viele "Systemsymbole" die JavaScript intern nutzt und wir können diese nutzen, um mehrer Aspekte unserer Objekte zu verfeinern. |
1H0
May 21, 2020
Member
| Es existieren viele "Systemsymbole" die JavaScript intern nutzt und wir können diese nutzen, um mehrer Aspekte unserer Objekte zu verfeinern. | |
| Es existieren viele "Systemsymbole" die JavaScript intern nutzt. Wir können diese nutzen, um mehrer Aspekte unserer Objekte zu verfeinern. |
|
|
||
| Other symbols will also become familiar when we study the corresponding language features. | ||
| Andere Symbole werden wir uns auch anvertrauen, wenn wir die entsprechenden sprachlichen Features studieren. |
1H0
May 21, 2020
Member
| Andere Symbole werden wir uns auch anvertrauen, wenn wir die entsprechenden sprachlichen Features studieren. | |
| Anderen Symbolen werden wir uns auch anvertrauen, wenn wir die entsprechenden sprachlichen Features studieren. |
|
|
||
| Symbols are always different values, even if they have the same name. If we want same-named symbols to be equal, then we should use the global registry: `Symbol.for(key)` returns (creates if needed) a global symbol with `key` as the name. Multiple calls of `Symbol.for` with the same `key` return exactly the same symbol. | ||
| Symbole sind stets verschiedene Werte, auch wenn sie den selben Namen haben. Wenn wir gleichnamig Symbole haben wollen, die auch gleich sind, dann sollten wir das globale Symbolregister nutzen: `Symbol.for(key)` gibt ein globale Symbol aus (wenn nötig kreiert dieses), mit `key` als den Name. Mehrere Aufrufe von `Symbol.for` mit dem selben `key` geben exakt das slebe Symbol aus. |
1H0
May 21, 2020
Member
| Symbole sind stets verschiedene Werte, auch wenn sie den selben Namen haben. Wenn wir gleichnamig Symbole haben wollen, die auch gleich sind, dann sollten wir das globale Symbolregister nutzen: `Symbol.for(key)` gibt ein globale Symbol aus (wenn nötig kreiert dieses), mit `key` als den Name. Mehrere Aufrufe von `Symbol.for` mit dem selben `key` geben exakt das slebe Symbol aus. | |
| Symbole sind stets verschiedene Werte, auch wenn sie den selben Namen haben. Wenn wir gleichnamige Symbole haben wollen, die auch gleich sind, dann sollten wir das globale Symbolregister nutzen: `Symbol.for(key)` gibt ein globales Symbol aus (wenn nötig kreiert dieses), mit `key` als den Name. Mehrere Aufrufe von `Symbol.for` mit dem selben `key` geben exakt das slebe Symbol aus. |
|
Please make the requested changes. After it, add a comment "/done". |
Irgendwelche Vorschläge für Literals?