2016-02-01 28 views
10

HTML specを読んでいる間に私はDOMStringに出くわしました。 MDNから実際にDOMStringとは何ですか?

:いくつかの研究では、それに関する以下のデータを見つけ

のDOMStringはUTF-16文字列です。 JavaScriptが既にこのような文字列を使用しているので、 DOMStringはStringに直接マップされます。 W3C specから

DOMString16-bit unitsのシーケンスです。

  1. が実際DOMStringは何であり、それはのために使用したものである:

しかし、私はまだ、以下の質問がありますか?

  • なぜそれはDOMの文字列ではないUTF16文字列ですか?具体的には、DOMとどのように関係していますか?
  • UTF-16でStringをエンコードすると、DOMStringになりますか?
  • +1

    HTML5の目的のために、DOMStringの定義は(DOM仕様ではなく)Web IDL仕様に延期されます。 DOMStringはほぼUTF-16文字列ですが、それほどです。実際、[Web IDL spec says](https://heycam.github.io/webidl/#idl-DOMString) "この仕様では、DOMString値が有効なUTF-16文字列である必要はありません。たとえば、DOMString値には、比類のないサロゲートペア文字が含まれている可能性があります。 – Alohci

    +0

    この文脈では、 'DOMString'はJavascript [' DOMStringList'(specへのリンク)]の単なる文字列ですが、これを追加したいと思います。(https://www.w3.org/TR/DOM-Level -3-Core/core.html#DOMStringList)は文字列の配列ではありません。私はいくつかの[Flow](https://flow.org/)型定義でこのエラーが発生したのを見てきました。 –

    答えて

    9

    これは、UTF-16文字列用の実装に依存しないDOMインターフェイスです。

    JavaScript文字列はすでにUTF-16文字列であるため、JavaScript Stringのインスタンスは自動的にDOMStringインスタンスにもなります。

    インターフェイスは、既定でUTF-16シーケンスとして文字列を実装しない実装のためのもので、必要に応じて別のタイプを実装してDOMStringにマッピングできます。実装に依存しないインタフェースが必要な理由は、仕様書のとおり、「相互運用性を保証する」ためです。

    なぜDOMStringと呼ばれていますか?おそらくそれはDOMに関連しているからです。それはDOMとどのように関連していますか?まあ、それはDOM標準の一部です。

    +0

    [Level 1](https://www.w3.org/TR/REC-DOM-Level-1/level-one-core.html#ID-C74D1578)を正確に入力してください。 –

    +0

    このコンテキストでのUTF-16はUCS-2ですか?サロゲートペア(リードとトレイル)はありませんが、16ビット(2バイト)のコードユニットしかないためです。 – Hydro

    関連する問題