Fino a poco tempo fa, non mi ero reso conto che esistono due tipi di stringhe (e boolè e numeri) in JavaScript: primitive come "blah"
e oggetti come new String("blah")
.Qualche API o librerie JavaScript standard restituiscono le stringhe come oggetti String?
Si differenziano per molto "Beccato" modi -prone, il più grande dei quali sembra essere il diverso valore di typeof
("string"
vs "object"
), ma un certo numero di altre differenze esistono, alcuni documented at MDN.
Non ha senso creare oggetti String perché le stringhe primitive funzionano altrettanto bene e JSHint even treats this as an error. Quindi mi piacerebbe davvero fingere che le istanze String non esistano nemmeno e supportano solo stringhe primitive nel mio codice.
Questo mi fa meraviglia: posso ottenere un'istanza di stringa sorpresa chiamando alcune API standard che restituiscono una stringa? O è davvero sicuro assumere che a meno che qualcuno non smetta di scrivere esplicitamente new String
, non vedrò mai uno di questi?
Che cosa intendi per "API JavaScript standard"? Le funzioni JS native? Le apis DOM? Moduli Node.js? – Bergi
@Bergi Le funzioni native, le API DOM e le "librerie JS popolari" vagamente definite. La questione non è se sia teoricamente possibile incontrarne uno (la risposta è ovvia), ma se sarei sciocco a pensare che non ne vedrò uno in qualsiasi applicazione ragionevolmente ben codificata. –