2016-02-01 13 views
10

Mi sono imbattuto nello DOMString durante la lettura dello HTML spec. Su alcune ricerche, ha trovato i seguenti dati che lo riguardano:Che cos'è veramente DOMString?

Da MDN:

DOMString è una stringa UTF-16. Poiché JavaScript utilizza già tali stringhe, DOMString viene mappato direttamente su String.

Da W3C spec:

Un DOMString è una sequenza di 16-bit units.

Ma ho ancora le seguenti domande:

  1. Cos'è un DOMString in realtà e cosa serve per?
  2. Perché è denominato come stringa DOM e non UTF16? Più specificamente, in che modo si riferisce a DOM?
  3. Se I UTF-16 codifica un String, diventa DOMString?
+1

Per gli scopi di HTML5, la definizione di DOMString viene posticipata alle specifiche Web IDL (non alle specifiche DOM). DOMString è quasi una stringa UTF-16, ma non del tutto. Infatti [specifica Web IDL] (https://heycam.github.io/webidl/#idl-DOMString) "Nulla in questa specifica richiede che un valore DOMString sia una stringa UTF-16 valida. Ad esempio, una DOMString il valore potrebbe includere caratteri di coppie surrogate non corrispondenti ". – Alohci

+0

Nel contesto di questa domanda vorrei aggiungere che mentre 'DOMString' è solo una stringa regolare in Javascript [' DOMStringList' (link alle specifiche)] (https://www.w3.org/TR/DOM-Level -3-Core/core.html # DOMStringList) non è un array di stringhe. Ho visto questo errore, ad esempio, in alcune definizioni di tipo [Flow] (https://flow.org/). –

risposta

9

È un'interfaccia DOM indipendente dall'implementazione per stringhe UTF-16.

Le stringhe JavaScript sono già stringhe UTF-16, quindi qualsiasi istanza di JavaScript String è automaticamente anche un'istanza DOMString.

L'interfaccia è pensata per implementazioni che non implementano stringhe come sequenze UTF-16 per impostazione predefinita, in modo che possano implementare un tipo separato per mappare su DOMString se necessario. Il motivo per cui un'interfaccia indipendente dall'implementazione è necessaria è, come afferma la specifica, "[to] garantire l'interoperabilità".

Perché si chiama DOMString? Presumibilmente perché è correlato al DOM. Come si relaziona con il DOM? Bene, fa parte dello standard DOM, per esempio.

+0

[Livello 1] (https://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-C74D1578) per la precisione. –

+0

UTF-16 in questo contesto è UCS-2, non è vero? Perché non ci sono coppie surrogate (lead e trail), ma solo unità di codice a 16 bit (2 byte). – Hydro