訳の正確性を保証するものではありませんので必要に応じて原文であるEcma InternationalのECMA-262にある ECMA-262.pdf ( ECMA-262 5.1 Edition )を参照下さい。
訳:2012年04月 webzoit.net
Stringプロトタイプオブジェクトは、値がカラの文字列であるStringオブジェクト自身(その[[Class]] は"String")です。 Stringプロトタイプオブジェクトの内部プロパティ[[Prototype]]の値は、標準組み込みObjectプロトタイプオブジェクト(15.2.4)です。
String.prototype.constructor の初期値は、組み込みStringコンストラクタです。
this String値を返します。(注釈としては、任意のStringオブジェクトにおいて toString メソッドは、 valueOf メソッドと同じものを返すというようなことが起こります。) toString関数は、汎用的ではありません。 つまり、この値が、文字列やStringオブジェクトではない場合、TypeError例外を投げます(スローします)。 その為、メソッドとしての使用においてオブジェクトの他の種類への転送はできません。
this String値を返します。 valueOf関数は、汎用的ではありません。 つまり、この値が、文字列やStringオブジェクトではない場合、TypeError例外を投げます(スローします)。 その為、メソッドとしての使用においてオブジェクトの他の種類への転送はできません。
このオブジェクトをStringに変換して得られた文字列内の位置 pos にある文字を含む文字列を返します。 その位置に文字が何もない場合、その結果は、カラの文字列です。 その結果は、String値であってStringオブジェクトではありません。 pos が、整数であるNumber型の値である場合、 x.charAt(pos) の結果は、 x.substring(pos, pos+1) の結果と等しくなります。 charAt メソッドが引数 pos を1つ伴って呼ばれる際には、次のステップがとられます。
1.その引数として this 値を渡してCheckObjectCoercibleを呼ぶ 2. S は、その引数として this 値を提供してToStringを呼んだ結果とする 3. position は、 ToInteger(pos) とする 4. size は、 S 内の文字の数とする 5. position < 0 または、 position ≧ size である場合、カラの文字列を返す 6. 位置0、次が位置1...のように考えられる S にある(最も左の)最初の文字において S から、すなわち、位置 position にある文字である長さ 1 の文字列を返す
[注釈] charAt関数は、汎用的であることが意図され、その this 値が、Stringオブジェクトとなる事を要求しません。 その為、メソッドとしての使用においてオブジェクトの他の種類に転送することが可能です。
このオブジェクトをStringに変換することで得られる文字列内の位置 pos にある文字である表示中のコードユニット値を表している(2の16乗よりも小さい非負の整数である)Numberを返します。 その位置にそのような文字が何もない場合、その結果は、NaNです。 charCodeAtメソッドは、引数 pos を1つ伴って呼ばれる際には、次のステップが取られます。
1.その引数として this 値を渡してCheckObjectCoercibleを呼ぶ 2. S は、その引数として this 値を提供してToStringを呼んだ結果とする 3. position は、 ToInteger(pos) とする 4. size は、S にある文字の数とする 5. position < 0 または、 position ≧ size である場合、 NaN を返す 6.位置0、次が位置1のように考えられる S にある(最も左の)最初の文字において文字列 S 内の位置 position にある文字の値が文字のコードユニット値であるNumber型の値を返す
[注釈] charCodeAt関数は、汎用的であることが意図され、this値がStringオブジェクトとなることを要求しません。 その為、メソッドとしての使用においてはオブジェクトの他の種類に転送することが可能です。
concatメソッドが、ゼロ個以上の string1, string2, ...といった引数を伴って呼ばれる際には、(各引数が文字列に変換される場合に)string1, string2...のそれぞれの文字で続く(文字列に変換した)このオブジェクトの文字を構成するStringを返します。 その結果は、String値であって、Stringオブジェクトではありません。 (concatメソッドは、)次のステップが取られます。
1.その引数として this 値を渡してCheckObjectCoercibleを呼ぶ 2. S は、その引数として this 値を提供して ToString を呼んだ結果とする 3. args は、この関数を渡して引数リストのコピーである内部リストとする 4. R は、 S とする 5. args がカラではない場合、繰り返す a. args から最初の要素を削除し、 next は、その要素の値とする b. ToString(next) の文字によって続く R の前の値にある文字で構成されるString値とする 6. R を返す
concatメソッドの length プロパティの値は、1です。 [注釈] concat関数は、汎用的であることが意図され、その this 値をStringオブジェクトとすることを要求しません。 その為、メソッドとしての使用においてはオブジェクトの他の種類に転送することが可能です。
searchString が、 position より大きいか等しい1個所以上の位置にあるこのオブジェクトを文字列に変換した結果の部分文字列として現れる場合、このような位置の最も小さいインデックスが返され、それ以外の場合、-1が返されます。 position が、 undefinedである場合、0 と仮定され、よって文字列全てを検索することになります。 indexOfメソッドは、 searchString と position という2つの引数を取り、次のステップを実行します。
1.その引数として this 値を渡してCheckObjectCoercibleを呼ぶ 2. S は、その引数として this 値を提供して ToString を呼んだ結果とする 3. searchStr は、 ToString(searchString) とする 4. pos は、 ToInteger(position) とする( position が、undefinedである場合、このステップは値0を生成) 5. len は、 S 内の文字の数とする 6. start は、 min(max(pos, 0), len) とする 7. searchLen は、 searchStr 内にある文字の数とする 8. len よりも大きくならない k + searchLen のような start よりも小さくならない可能な限り最も小さい整数 k を返し、 searchLen よりも小さい非負の整数 j 全てにおいて S の位置 k+j にある文字は、 searchStr の位置 j にある文字と同一だが、そのような整数 k がない場合には、値 -1 を返す
indexOfメソッドの length プロパティの値は、1です。 [注釈] indexOf関数は、汎用的であることが意図され、その this 値をStringオブジェクトとすることを要求しません。 その為、メソッドとしての使用においてはオブジェクトの他の種類に転送することが可能です。
searchString が、 position より小さいか、または等しい位置であり、1つ以上の位置にある文字列が、このオブジェクトに変換した結果の部分文字列として現れる場合、そのような位置における最大のインデックスが、返され、それ以外の場合、-1が返されます。 position が、 undefinedである場合、String値の length は、文字列の全てを検索するものとして想定されます。 lastIndexOfメソッドは、 searchString と positionという2つの引数を取り、次のステップを実行します。
1.その引数として this 値を渡してCheckObjectCoercibleを呼ぶ 2. S は、その引数として this 値を提供してToStringを呼んだ結果とする 3. searchStr は、 ToString(searchString) とする 4. numPos は、 ToNumber(position) とする( position が、 undefinedである場合、値 NaNを生成) 5. numPos が、 NaN である場合、 pos は、+∞ とし、それ以外の場合、 pos は、 ToInteger(numPos) とする 6. len は、 S にある文字の数とする 7. start は、 min(max(pos, 0), len) とする 8. searchLen は、 searchStr にある文字の数とする 9. len よりも大きくならない k + searchLen のような start よりも大きくならない可能な限り最も大きい整数 k を返し、 searchLen よりも小さい非負の整数 j 全てにおいて S の位置 k+j にある文字は、 searchStr の位置 j にある文字と同一だが、そのような整数 k がない場合には、値 -1 を返す
lastIndexOfメソッドの length プロパティの値は、1です。 [注釈] lastIndexOf関数は、汎用的であることが意図され、その this 値をStringオブジェクトとすることを要求しません。 その為、メソッドとしての使用においてはオブジェクトの他の種類に転送することが可能です。
localeCompareメソッドが、引数1つを伴って呼ばれる際には、(文字列に変換した) that を伴う(文字列に変換した)この値のロケール依存の文字列比較の結果を表す NaN ではない Numberを返します。 2つの文字列は、S と Thatとします。 2つの文字列は、実装定義の方法で比較されます。 その結果は、ソート順で That の前に来る S 、文字列が等しい、または、再帰的にソート順で That の後に来る S かどうかに依存する負、0、または正であり、システム既定のロケールによって指定したソート順でString値を指定することが意図されます。 その比較を実行する前に文字列を準備する為、次のステップが、実行されます。
1.その引数として this 値を渡してCheckObjectCoercibleを呼ぶ 2. S は、その引数として this 値を提供してToStringを呼んだ結果とする 3. That は、 ToString(that) とする
localeCompareメソッドは、this と that の2つの引数から成る関数と考えられる場合、それは、全ての文字列の集合について( 15.4.4.11 で定義したように)一貫性のある比較関数です。 実際に返す値は、値中にあるエンコードのオプション情報の実装を許可する為に実装定義となっていますが、関数は、Unicode標準規格によって正規に等価であると考えられる文字列を比較する場合、全ての文字列についてまとめて命令を定義し、0を返します。 ホスト環境から利用可能である全てにおいて言語依存の比較がない場合、この関数は、ビット単位の比較を実行する場合があります。 [注釈 1] localeCompareメソッドそれ自身は、後者が2つの引数から成る関数を要求する為、直接 Array.prototype.sort を引数とすることは適切ではありません。 [注釈 2] この関数は、ホスト環境からECMAScript環境を利用可能である比較機能であり、ホスト環境の現在のロケールの規則による比較といった何らかの言語依存によることが意図されます。 同一であるものとしてUnicode標準規格による正規に等価である文字列を扱う(、言い換えるとそれらが共に正規化書式 C や D に最初に変換されているかのように文字列を比較する、)この関数を強く推奨します。 それはまた、等価性や分解といったUnicode互換性を遵守しないこの関数であっても推奨されます。 [注釈 3] この関数の2つめのパラメータは、この標準規格の将来のバージョンで使用されるかもしれません。 つまり、実装は、いかなる場合においてもこのパラメータ位置を使用しないことが推奨されます。 [注釈 4] localeCompare関数は、汎用的であることが意図され、その this 値をStringオブジェクトとすることを要求しません。 その為、メソッドとしての使用においてはオブジェクトの他の種類に転送することが可能です。
matchメソッドは、引数 regexp を伴って呼ばれる際には、次のステップが取られます。
1.その引数として this 値を渡してCheckObjectCoercibleを呼ぶ 2. S は、その引数として this 値を提供してToStringを呼んだ結果とする 3. Type(regexp) が、 Objectであり且つ、 regexp の内部プロパティ[[Class]]の値が、"RegExp"である場合、 rx は、 regexp とする 4.それ以外の場合、 rx は、 RegExp が、その名を持つ標準組み込みコンストラクタである場合、式 new RegExp(regexp) によるかのように生成した新たな RegExp オブジェクトとする 5. global は、引数"global"を伴う rx の内部メソッド[[Get]]を呼んだ結果とする 6. exec は、標準組み込み関数 RegExp.prototype.exec ( 15.10.6.2 参照)とする 7. global が、 trueではない場合、 a. this 値としての rx と S を含む引数リストを伴う exec の内部メソッド[[Call]]を呼んだ結果を返す 8.それ以外の場合、 global は、 trueであり、 a.引数"lastIndex" と 0を伴う rx の内部メソッド[[Put]]を呼ぶ b. A は、 Array が、その名を伴う標準組み込みコンストラクタである場合、式 new Array() によるかのように生成した新たな配列とする c. previousLastIndex は、 0 とする d. n は、 0 とする e. lastMatch は、 true とする f. lastMatch が、trueである間、繰り返す i. result は、 this 値としての rx と S を含む引数リストを伴う exec の内部メソッド[[Call]]を呼んだ結果とする ii. result が、 nullである場合、 lastMatch に falseを設定する iii.それ以外の場合、 result は、 null ではなく、 1. thisIndex は、引数"lastIndex"を伴う rx の内部メソッド[[Get]]を呼んだ結果とする 2. thisIndex = previousLastIndex である場合、 a 引数"lastIndex"と thisIndex+1 を伴う rx の内部メソッド[[Put]]を呼ぶ b previousLastIndex に thisIndex+1 を設定する 3.それ以外の場合、 previousLastIndex に thisIndex を設定する 4. matchStr は、引数"0"を伴う result の内部メソッド[[Get]]を呼んだ結果とする 5.引数 ToString(n) 、プロパティ記述子 {[[Value]]: matchStr, [[Writable]]: true, [[Enumerable]]: true, [[configurable]]: true}、falseを伴う A の内部メソッド[[DefineOwnProperty]]を呼ぶ 6. n を増分する g. n = 0 である場合、 nullを返す h. A を返す
[注釈] match関数は、汎用的であることが意図され、その this 値をStringオブジェクトとすることを要求しません。 その為、メソッドとしての使用においてはオブジェクトの他の種類に転送することが可能です。
まず、次のステップによって文字列を設定します。
1.その引数として this 値を渡してCheckObjectCoercibleを呼ぶ 2. string は、その引数として this 値を提供してToStringを呼んだ結果とする searchValue が、正規表現(オブジェクトの内部プロパティ[[Class]]が"RegExp")である場合、次を実行する searchValue.global が、 falseである場合、正規表現 searchValue と最初にマッチする文字列を検索する searchValue.global が、 trueである場合、正規表現 searchValue とマッチする全ての文字列を検索する searchValue.lastIndex の更新を含め、 String.prototype.match 内と同じ方法で検索を実行する m は、( 15.10.2.1 で記述したように NcapturingParens を使用して) searchValue 内のキャプチャーした左カッコの数とする searchValue が、正規表現ではない場合、 searchString は、 ToString(searchValue) とし、 searchString の最初に出現する文字列を検索する m は、 0 とする replaceValue が、関数である場合、マッチした部分文字列ごとに次の引数 m + 3 を伴う関数を呼ぶ 引数1は、マッチした部分文字列とする searchValue が、正規表現である場合、次の引数 m は、 MatchResult ( 15.10.2.1 参照)内でキャプチャーしたもの全てとする 引数 m + 2 は、マッチが発生した場所の文字列内のオフセット、引数 m + 3 は、文字列とする その結果は、必要に応じて文字列に変換した対応する関数呼び出しの戻り値を伴うマッチした部分文字列ごとに置換することによってオリジナルの入力から派生したString値とする それ以外の場合、 newstring は、 replaceValue を文字列に変換した結果を示すものとする その結果は、Table 22で記述したように置換テキストによって newstring 内で文字を置換することによって newstring から派生した文字列を伴うマッチした部分文字列ごとに置換することによってオリジナルの入力文字列から派生したString値とする これらの $ 置換は、左から右へ実行され、1度だけそのような置換が実行され、新たな置換テキストは、もう置換されることはない 例えば、 "$1,$2".replace(/(\$(\d))/g, "$$1-$1$2") は、 "$1$11,$1-$22" を返す newstring にある1つの $ は、左側にある下記フォームの何れともマッチしない
Table 22 -- 置換テキスト記号の代入 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 文字 置換テキスト ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- $$ $ $& マッチした部分文字列 $` マッチした部分文字列に先行する部分文字列 $' マッチした部分文字列に後続する部分文字列 $n n番めのキャプチャ、n は、1から9までの範囲の1ケタで且つ、$n は、10進数字によって続くことはない n≦m 且つ、n番めのキャプチャが、undefinedである場合、代わりにカラの文字列を使用 n>mである場合、その結果は、実装定義 $nn nn番めのキャプチャ、nn は、01から99までの2ケタの10進数値。nn≦m 且つ、nn番めのキャプチャが、undefinedである場合、代わりにカラの文字列を使用 nn>mである場合、その結果は、実装定義 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- [注記]$&,$`,$',$nはPerlと同様
[注釈] replace関数は、汎用的であることが意図され、その this 値をStringオブジェクトとすることを要求しません。 その為、メソッドとしての使用においてはオブジェクトの他の種類に転送することが可能です。
searchメソッドは、引数 regexp を伴って呼ばれる際には、次のステップが取られます。
1.その引数として this 値を渡してCheckObjectCoercibleを呼ぶ 2. string は、その引数として this 値を提供してToStringを呼んだ結果とする 3. Type(regexp) が、 Objectであり、 regexp の内部プロパティ[[Class]]の値が、"RegExp"である場合、 rx は、 regexp とする 4.それ以外の場合、rx は、その名を伴う標準組み込みコンストラクタである RegExp を式 new RegExp(regexp) によるかのように生成した新たな RegExp オブジェクトとする 5.正規表現パターン rx の出現におけるその開始から値 string を検索する result は、マッチした文字列内のオフセットまたは、マッチしなかった場合 -1 を示す Number とする lastIndex と regexp のグローバルプロパティは、検索を実行する際に無視される regexp の lastIndex プロパティは、変更されない 6. result を返す
[注釈] search関数は、汎用的であることが意図され、その this 値をStringオブジェクトとすることを要求しません。 その為、メソッドとしての使用においてはオブジェクトの他の種類に転送することが可能です。
sliceメソッドは、 start と end という2つの引数を取り、このオブジェクトをStringに変換した結果である部分文字列を返し、文字位置 start から開始し、含まれはしませんが、文字位置 end (、または、end が undefined(未定義)である場合、String の末尾)まで実行されます。 start が負数である場合、それは、文字列の長さが sourceLength である場合、 sourceLength + start として扱われます。 end が負数である場合、それは、文字列の長さが sourceLength である場合、 sourceLength + end として扱われます。 その結果は、String値であってStringオブジェクトではありません。 (sliceメソッドは、)次のステップが取られます。
1.その引数として this 値を渡してCheckObjectCoercibleを呼ぶ 2. S は、その引数として this 値を提供してToStringを呼んだ結果とする 3. len は、Sにある文字の数とする 4. intStart は、 ToInteger(start) とする 5. end が、undefinedである場合、 intEnd は、 len とし、それ以外の場合、 intEnd は、ToInteger(end) とする 6. intStart が負数である場合、 from は、 max(len + intStart,0) とし、それ以外の場合、 from は、 min(intStart, len) とする 7. intEnd が負数である場合、 to は、 max(len + intEnd,0)とし、それ以外の場合、 to は、 min(intEnd, len) とする 8. span は、 max(to - from,0) とする 9.位置 from にある文字を伴って始まる S から連続した複数文字の範囲を含む文字列を返す
sliceメソッドの length プロパティは、2です。 [注釈] slice関数は、汎用的であることが意図され、その this 値をStringオブジェクトとすることを要求しません。 その為、メソッドとしての使用においてはオブジェクトの他の種類に転送することが可能です。
this オブジェクトを文字列に変換した結果としての部分文字列が保持されている場合、Array オブジェクトを返します。 部分文字列は、separatorの出現において左から右に検索することによって決められます。 これらの出現は、返した配列内の部分文字列の一部ではありませんが、String値を分割する為に提供されます。 separatorの値は、任意の長さの文字列である場合やRegExpオブジェクトである場合があります。(例:あるオブジェクトの内部プロパティ[[Class]] が"RegExp" 、 15.10参照) separatorの値は、カラの文字列、カラの正規表現、カラの文字列にマッチする正規表現である場合もあります。 これらのケースにおいては、 separator は、入力文字列の開始位置や終了位置にあるカラの部分文字列にマッチするわけでも、マッチする separator の前の終了位置にあるカラの部分文字列にマッチするわけでもありません(。例えば、 separator がカラの文字列である場合、文字列は、個別の文字になるまで分割されます。その結果となる配列の大きさは、文字列の長さと等しく、各部分文字列は1つの文字を含みます)。 separator が、正規表現である場合、 後戻りすることによって、その位置でマッチするカラではない部分文字列を得ることが可能な場合でさえ、与えられた this String の位置でマッチするのは最初だけであると考えられます(。例えば、"ab".split(/a*?/) は、配列 ["","b"] を評価してから配列 ["a","b"] を評価します)。 当該 this オブジェクトが、カラの文字列(、または、それを変換したもの)である場合、その結果は、カラの文字列とマッチすることが可能な separator か否かに依存します。 可能である場合、その結果となる配列は、要素を何も含みません。 それ以外の場合、その結果となる配列は、カラの文字列である1つの要素を含みます。 separator が、キャプチャするカッコを含む正規表現である場合、 separator が、キャプチャしたカッコである(undefinedという結果を含む)その結果とマッチさせる時点ごとに出力する配列についてスプライスされます。 例えば、
"A<B>bold</B>and<CODE>coded</CODE>".split(/<(\/)?([^<>]+)>/)
は、配列
["A", undefined, "B", "bold", "/", "B", "and", undefined, "CODE", "coded", "/", "CODE", ""]
と評価します。 separator が、 undefinedである場合、ちょうど1つの文字を含む結果となる配列は、(文字列に変換した) this 値です。 limit が、undefinedではない場合、その出力となる配列は、いかなる limit 要素も含まないものとして切り詰め(切り捨て)られます。 splitメソッドが呼ばれる際には、次のステップが取られます。
1.その引数として this 値を渡してCheckObjectCoercibleを呼ぶ 2. S は、その引数として this 値を提供してToStringを呼んだ結果とする 3. A は、その名を伴う標準組み込みコンストラクタである Array を式 new Array() によるかのように生成した新たな配列とする 4. lengthA は、 0 とする 5. limit が、 undefined である場合、 lim = 2の32乗-1 とし、それ以外の場合、 lim = ToUint32(limit) とする 6. s は、S にある文字数とする 7. p = 0 とする 8. separator が、 RegExpオブジェクト(、その[[Class]]が、"RegExp")である場合、 R = separator とし、それ以外の場合、 R = ToString(separator) とする 9. lim = 0 である場合、 A を返す 10. separator が、 undefined である場合 a.引数"0"、プロパティ記述子 {[[Value]]: S, [[Writable]]: true, [[Enumerable]]: true, [[Configurable]]: true}、false を伴う A の内部メソッド[[DefineOwnProperty]]を呼ぶ b. A を返す 11. s = 0 である場合、 a. SplitMatch(S, 0, R) を呼び、z は、その MatchResult 結果とする b. z が、 failure ではない場合、 A を返す c.引数"0"、プロパティ記述子 {[[Value]]: S, [[Writable]]: true, [[Enumerable]]: true, [[Configurable]]: true}、 falseを伴う A の内部メソッド[[DefineOwnProperty]]を呼ぶ d. A を返す 12. q = p とする 13. while q ≠ s という条件下で繰り返す a. SplitMatch(S, q, R) を呼び、z は、その MatchResult 結果とする b. z が、 failure である場合、 q = q+1 とする c.それ以外の場合、 z が、 failure ではなく、 i. z は、State としなければならない e は、 z の endIndex とし、 cap は、 z のキャプチャした配列とする ii. e = p である場合、 q = q+1 とする iii.それ以外の場合、 e ≠ p であり、 1. T は、 p (を包む p )から q (を含まない q )までの位置にある文字を含む S の部分文字列と等しいString値とする 2.引数 ToString(lengthA) 、プロパティ記述子 {[[Value]]: T, [[Writable]]: true, [[Enumerable]]: true, [[Configurable]]: true}、 false を伴う A の内部メソッド[[DefineOwnProperty]]を呼ぶ 3. lengthA を 1で増分する 4. lengthA = lim である場合、 A を返す 5. p = e とする 6. i = 0 とする 7. i が、cap にある要素数と等しくない間、繰り返す a i = i+1 とする b 引数 ToString(lengthA) 、プロパティ記述子 {[[Value]]: cap[i], [[Writable]]: true, [[Enumerable]]: true, [[Configurable]]: true}、false を伴う A の内部メソッド[[DefineOwnProperty]]を呼ぶ c lengthA を 1 で増分する d lengthA = lim である場合、 A を返す 8. q = p とする 14. T は、 p (を包む p )から s (を含まない s )までの位置にある文字を含む S の部分文字列と等しいString値とする 15.引数 ToString(lengthA) 、プロパティ記述子 {[[Value]]: T, [[Writable]]: true, [[Enumerable]]: true, [[Configurable]]: true}、 false を伴う A の内部メソッド[[DefineOwnProperty]]を呼ぶ 16. A を返す
抽象操作SplitMatchは、文字列 S 、整数 q 、Stringまたは、RegExpであるRといった3つのパラメータを取り、 MatchResult ( 15.10.2.1 参照)を返す為に次を実行します。
1. R が、 RegExp オブジェクト(、その[[Class]]が、"RegExp")である場合、 a.引数 S と q を与えられる R の内部メソッド[[Match]]を呼び、MatchResult 結果を返す 2. Type(R) は、String にしなければならない r は、R 内の文字数とする 3. s は、S 内の文字数とする 4. q+r > s である場合、MatchResult failureを返す 5. R の位置 i にある文字とは異なる S の位置 q+1 にある文字のように 0 (を含む 0 ) と r (を含まない r ) との間に整数 i が存在する場合、failureを返す 6. cap は、キャプチャしたカラの配列 ( 15.10.2.1 参照)とする 7. State (q+r, cap) を返す( 15.10.2.1 参照)
splitメソッドの length プロパティは、2です。 [注釈 1] splitメソッドは、 RegExp オブジェクトであるセパレータにおける separator.globalの値を無視します。 [注釈 2] split関数は、汎用的であることが意図され、その this 値をStringオブジェクトとすることを要求しません。 その為、メソッドとしての使用においてはオブジェクトの他の種類に転送することが可能です。
substringメソッドは、start と endという2つの引数を取り、当該文字列の位置 start で始まり、含まれはしませんが、位置 end の文字(、または、 end が、undefinedである場合、文字列の末尾)まで実行して this オブジェクトを文字列に変換した結果としての部分文字列を返します。 その結果は、String値であってStringオブジェクトではありません。 引数が、NaNまたは負数の何れかである場合、ゼロを伴って置換され、何らかの引数が文字列の長さより大きい場合、その文字列の長さで置換されます。 start が、 end よりも大きい場合、それらは入れ替えられ(スワップされ)ます。 (substringメソッドは、)次のステップが取られます。
1.その引数として this 値を渡してCheckObjectCoercibleを呼ぶ 2. S は、その引数として this 値を提供してToStringを呼んだ結果とする 3. len は、 S 内の文字数とする 4. intStart は、 ToInteger(start) とする 5. end が、 undefined である場合、 intEnd は、 len とし、それ以外の場合、 intEnd は、 ToInteger(end) とする 6. finalStart は、 min(max(intStart, 0), len) とする 7. finalEnd は、 min(max(intEnd, 0), len) とする 8. from は、 min(finalStart, finalEnd) とする 9. to は、 max(finalStart, finalEnd) とする 10.含んでいる S から成る文字、すなわち、昇順で -1 までのインデックスを持つ文字から成る複数文字から - となる length を持つ任意の文字列を返す
substringメソッドの length プロパティは、2です。 [注釈] substring関数は、汎用的であることが意図され、その this 値をStringオブジェクトとすることを要求しません。 その為、メソッドとしての使用においてはオブジェクトの他の種類に転送することが可能です。
(toLowerCaseは、)次のステップが取られます。
1.その引数として this 値を渡してCheckObjectCoercibleを呼ぶ 2. S は、その引数として this 値を提供してToStringを呼んだ結果とする 3. L は、S から成る文字と一致するものと等しいUnicode小文字、または、Unicode小文字と等価のものがない場合、 S から成る実際に一致する文字の何れかである L の各文字である文字列とする 4. L を返す
この操作の目的において当該文字列の16ビットコードユニットは、UnicodeのBasic Multilingual Plane(略称:BMP、基本多言語水準/基本多言語レベル)内のコードポイントとして扱われます。 サロゲートコードポイントは、なんらマッピングすることなく S から L に直接転送されます。 その結果は、Unicode文字データベース内でケースマッピングによって派生されなければいけません(。これは、 UnicodeData.txt ファイルばかりでなく、 Unicode 2.1.8 とそれ以降でそれに付随する SpecialCasings.txt ファイルを明示的に含みます)。 [注釈 1] 一部の文字のケースマッピングにおいては、複数文字を生成する場合があります。 このケースにおいて、その結果となる文字列は、ソース文字列と同じ長さにならない場合もあります。 なぜなら、 toUpperCase と toLowerCase の双方は、内容依存(context-sensitive)の動作を持ち、当該関数は、対称的ではない(つり合わない)からです。 言い換えると s.toUpperCase().toLowerCase() は、 s.toLowerCase() と等しくなる必要はありません。 [注釈 2] toLowerCase関数は、汎用的であることが意図され、その this 値をStringオブジェクトとすることを要求しません。 その為、メソッドとしての使用においてはオブジェクトの他の種類に転送することが可能です。
この関数は、その結果が、ロケール独自の結果ではなく、ホスト環境の現在のロケールにおいて正しい結果を得ることが意図されるという点を除き、toLowerCaseと全く同じように作用します。 正規のUnicodeのケースマッピングを伴う言語的な齟齬におけるルールについては、(トルコ語のような)いくつかの状況でのみ異なる場合があるでしょう。 [注釈 1] 当該関数への1つめのパラメータは、この標準の将来のバージョンで使用されるかもしれません。 それは、つまり、実装は、いかなる場合においてもこのパラメータ位置を使用しないことが推奨されるということです。 [注釈 2] toLocaleLowerCase関数は、汎用的であることが意図され、その this 値をStringオブジェクトとすることを要求しません。 その為、メソッドとしての使用においてはオブジェクトの他の種類に転送することが可能です。
この関数は、Unicode文字データベース内で記述したようにそれらの大文字と等価であるものとマップされるという点をを除き、 String.prototype.toLowerCaseと全く同じように動作します。 [注釈] toUpperCase関数は、汎用的であることが意図され、その this 値をStringオブジェクトとすることを要求しません。 その為、メソッドとしての使用においてはオブジェクトの他の種類に転送することが可能です。
この関数は、その結果が、ロケール依存による結果ではなく、ホスト環境の現在のロケールにおける正しい結果を得ることを意図されるという点を除き、 toUpperCase と全く同じように作用します。 正規のUnicodeケースマッピングを伴う言語的な齟齬における規則については、(トルコ語)のようないくつかのケースでのみ異なるものになるでしょう。 [注釈 1] 当該関数の1つめのパラメータは、この標準規格の将来のバージョンで使用されるかもしれません。 それは、つまり、実装は、いかなる場合においてもこのパラメータ位置を使用しないことが推奨されるという事です。 [注釈 2] toLocaleUpperCase関数は、汎用的であることが意図され、その this 値をStringオブジェクトとすることを要求しません。 その為、メソッドとしての使用においてはオブジェクトの他の種類に転送することが可能です。
(trimは、)次のステップが取られます。
1.その引数として this 値を渡してCheckObjectCoercibleを呼ぶ 2. S は、その引数として this 値を提供してToStringを呼んだ結果とする 3. T は、先行と後続するホワイトスペースを共に削除した S のコピーであるString値とする ホワイトスペースの定義は、WhiteSpace(空白) と LineTerminator(行終端)の和集合である。 4. T を返す
[注釈] trim関数は、汎用的であることが意図され、その this 値をStringオブジェクトとすることを要求しません。 その為、メソッドとしての使用においてはオブジェクトの他の種類に転送することが可能です。