1. 型変換
1.文字列に変換
ECMAScript のブール値、数値、文字列プリミティブの興味深い点は、これらが疑似オブジェクトであることです。つまり、実際にはプロパティとメソッドがあることを意味します。
のように:
次のようにコードをコピーします。
var sColor = "青";
alert(sColor.length);//「4」を出力
要約すると、3 つの主要なプリミティブ値、ブール値、数値、文字列にはすべて toString() メソッドがあります。 ECMAScript で定義されたすべてのオブジェクトには、擬似オブジェクトであっても実際のオブジェクトであっても、toString() メソッドがあります。
ブール値の toString() メソッドは「true」または「false」を出力するだけで、結果は変数の値によって決まります。
次のようにコードをコピーします。
var bFound = false;
alert(bFound.toString());//「false」を出力します
Number 型の toString() メソッドは特殊で、デフォルト モードとベース モードの 2 つのモードがあり、デフォルト モードを使用すると、toString() メソッドは対応する文字列のみを使用して数値を出力します。整数、浮動小数点数、または科学的表記法)。
次のようにコードをコピーします。
var iNum1 = 10;
var fNum2 = 10.0;
alert(iNum1.toString()); //「10」を出力します。
alert(fNum2.toString()); //「10」を出力します。
Number 型の toString() メソッドの基底モードを使用すると、数値をさまざまな基数 (基数) で出力できます。
次のようにコードをコピーします。
var iNum = 10;
alert(iNum.toString(2)); //「1010」を出力します。
alert(iNum.toString(8)); //「12」を出力します。
alert(iNum.toString(16)); //「A」を出力します
2.数値に変換する
ECMAScript には、数値以外のプリミティブ値を数値に変換するための 2 つのメソッド、parseInt() と parseFloat() が用意されています。
注: これらのメソッドが String 型 (Number を除く) で呼び出された場合にのみ、他のすべての型は NaN を返します。
例えば:
次のようにコードをコピーします。
var iNum1 = parseInt("1234blue");//1234 を返します
var iNum2 = parseInt("oxA"); // 10 を返します。
var iNum3 = parseInt("22.5"); // 22 を返します。
var iNum4 = parseInt("blue"); // NaN を返します。
parseInt() メソッドには基本モードもあり、2 進数、8 進数、16 進数、またはその他の基本文字列を 10 進整数に変換できます。 2 番目のパラメータは、どの塩基を解析するかを指定します。
次のようにコードをコピーします。
var iNum1 = parseInt("AF",16);// 175 を返します
var iNum2 = parseInt("10",2); // 2 を返します。
var iNum3 = parseInt("10",8); // 8 を返します。
var iNum4 = parseInt("10",10); // 10 を返します。
注: 10 進数の先頭に 0 が含まれる場合は、基数 10 を使用するのが最善です。そうしないと、8 進数値が取得されます。
次のようにコードをコピーします。
var iNum1 = parseInt("010"); // 8 を返します。
var iNum2 = parseInt("010",8); // 8 を返します。
var iNum3 = parseInt("010",10);//10 を返します
parseFloat() メソッドは parseInt() メソッドに似ています。このメソッドは、位置 0 から最初の無効な文字が見つかるまで各文字を調べ、その文字の前の文字列を数値に変換します。このメソッドでは、最初の小数点が有効な文字です。小数点以下 2 桁が使用されている場合、小数点以下 2 番目は無効とみなされます。このメソッドを使用する場合のもう 1 つの違いは、文字列が 10 進形式の浮動小数点数を表現する必要があることです。
次のようにコードをコピーします。
var fNum1 = parseFloat("1234blue"); // 1234.0 を返します。
var fNum2 = parseFloat("0xA"); // NaN を返します。
var fNum3 = parseFloat("22.5"); // 22.5 を返します。
var fNum4 = parseFloat("22.34.5");//22.34 を返します
var fNum5 = parseFloat("0908");// NaN を返します
var fNum6 = parseFloat("blue");//NaN を返します
3. 強制型変換
ECMAScript で使用できるキャストは次の 3 種類です。
(1).ブール値(値)
指定された値をブール型に変換します。
Boolean() 関数は、変換される値が文字列、ゼロ以外の数値、または少なくとも 1 つの文字を含むオブジェクトである場合に true を返します。値が空の文字列、数値 0、未定義、または null の場合は、false を返します。
のように:
次のようにコードをコピーします。
var b1 = Boolean(""); // false;
var b2 = Boolean("hi");//true
var b3 = Boolean(100);//true
var b4 = ブール(null);//false
var b5 = ブール(0);//false
var b6 = Boolean(new Object());//true
(2).数値(値)
指定された値を数値 (整数または浮動小数点数) に変換します。
また、parseInt() メソッドと parseFloat() メソッドは最初の無効な文字の前の文字列のみを変換するため、「4.5.6」は「4.5」に変換されることにも注意してください。 Number()、「4.5.6」を使用してキャストすると、文字列値全体を数値に変換できないため、NaN が返されます。文字列を完全に変換できる場合、Number() は parseInt() メソッドを呼び出すか parseFloat() メソッドを呼び出すかを決定します。
のように:
次のようにコードをコピーします。
数値(偽);//0
数値(真);//1
数値(未定義);//NaN
数値(null);//0
Number("5.5");//5.5
Number("56");//56
Number("5.6.7");//NaN
Number(new Object());//NaN
数値(100);//100
(3).文字列(値)
指定された値を文字列に変換します。
toString() メソッドの呼び出しとの唯一の違いは、null または未定義の値をキャストすると、エラーが発生せずに文字列が生成されることです。
次のようにコードをコピーします。
var s1 = String(null);//「null」
var oNull = null;
var s2 = oNull.toString();//エラーが発生します
2. 参照タイプ
参照型は通常クラスと呼ばれます。これは、参照値が見つかったときにオブジェクトが処理されることを意味します。 ECMAScript は、他のプログラミング言語のクラスと論理的に同等の「オブジェクト定義」を定義します。
1.オブジェクトクラス
ECMAScript のすべてのクラスはこのクラスから継承され、Object クラスのすべてのプロパティとメソッドは他のクラスに表示されます (オーバーライドされます)。
オブジェクトクラスのプロパティ:
(1).Constructor ----オブジェクトを作成する関数への参照(ポインタ)。 Object クラスの場合、このポインターは元の object() 関数を指します。
(2).Prototype ---- オブジェクトのオブジェクト プロトタイプへの参照。すべてのクラスに対して、デフォルトで Object オブジェクトのインスタンスを返します。
オブジェクトクラスのメソッド:
(1).HasOwnProperty(property)----オブジェクトが特定の属性を持っているかどうかを判断します。プロパティは文字列として指定する必要があります (例: o.hasOwnProperty("name"))。
(2).IsPrototypeOf(object) ----オブジェクトが別のオブジェクトのプロトタイプであるかどうかを判断します。
(3).PropertyIsEnumerable(property)----for..in ステートメントを使用して指定されたプロパティを列挙できるかどうかを判断します。
(4).ToString()----オブジェクトの元の文字列表現を返します。 ECMAScript 実装が異なれば、値も異なります。
(5).ValueOf()----オブジェクトに最適な元の値を返します。多くのクラスでは、このメソッドによって返される値は toString() の戻り値と同じです。
2.ブールクラス
ECMAScript ではブール オブジェクトが使用されることはほとんどありません。また、使用されたとしても、理解するのは簡単ではありません。
例えば:
次のようにコードをコピーします。
var oFalseObject = 新しいブール値(false);
var bResult = oFalseObject && true;// true を出力します。
理由: ブール式では、すべてのオブジェクトが自動的に true に変換されます。
3.数値クラス
Number.MAX_VALUE などの特別な値は、Number クラスの静的プロパティです。数値オブジェクトの Number の元の値を取得するには、valueOf() メソッドを使用します。
var iNumber = oNumberObject.valueOf();
Object クラスから継承された標準メソッドに加えて、Number クラスには数値を処理するための特殊なメソッドがいくつかあります。
toFixed() メソッド:
指定された小数点以下の桁数を持つ数値の文字列表現を返します。このメソッドは小数点以下 0 ~ 20 桁の数値を表現できます。この範囲外の値はエラーとなります。
のように:
次のようにコードをコピーします。
var oNumberObject = 新しい数値(99);
aler(oNumberObject.toFixed(2));//「99.00」を出力します
toExponential() メソッド:
科学表記法で数値の文字列表現を返します。このメソッドは、出力する小数点以下の桁数を指定するパラメーターも受け取ります。例えば:
次のようにコードをコピーします。
var oNumberObj = 新しい数値(99);
alert(oNumberObj.toExponential(1));//「9.9e+1」を出力します
toPrecision() メソッド:
どの形式が最も意味があるかに応じて、数値の事前に決定された形式または指数形式を返します。引数が 1 つあり、これは数値を表すために使用される合計桁数 (指数を除く) です。
次のようにコードをコピーします。
var oNumberObj = 新しい数値(99);
alert(oNumberObj.toPrecision(1));//「1e+2」==100 を出力します
見てわかるように、 toPrecision() メソッドは数値を四捨五入して、できるだけ真の値に近い数値を取得します。
のように:
次のようにコードをコピーします。
var oNumberObj = 新しい数値(99);
alert(oNumberObj.toPrecision(2));// 「99」を出力します
alert(oNumberObj.toPrecision(3));// 「99.0」を出力します
toFixed()、toExponential()、および toPrecision() メソッドはすべて、正しい小数点以下の桁数で数値を正しく表すために丸め演算を実行します。
toLocaleString() メソッド:
ページ上の形式で表示できます。たとえば、5210.50 は 5,210.50 と表示されますが、その値を使用する場合は、parseFloat($("N_YJJE").value.replace(//) の形式で置き換える必要があります。 ,/g, "")); カンマを削除して値を取得します。
注: ブール値オブジェクトと同様に、数値オブジェクトも重要ですが、潜在的な問題を避けるために慎重に使用する必要があります。可能な限り、数値の生の表現を使用してください。
4.文字列クラス
String オブジェクトの valueOf() メソッドと toString() メソッドはどちらも String 型の元の値を返します。
次のようにコードをコピーします。
alert(oStringObj.valueOf() == oStringObj.toString());//「true」を出力します
String クラスには、文字列内の文字数を表す属性 length があります。
次のようにコードをコピーします。
var oStringObj = new String("hello world");
alert(oStringObj.length);出力「11」
注: 文字列に 2 バイト文字が含まれている場合でも、各文字は 1 文字としてカウントされます。
charAt() メソッド:
指定された位置にある文字を含む文字列を返します。
次のようにコードをコピーします。
var oStringObj = new String("hello world");
alert(oStringObj.charAt(1));出力「e」
charCodeAt() メソッド:
指定された位置の文字コードを含む文字列を返します。
次のようにコードをコピーします。
var oStringObj = new String("hello world");
alert(oStringObj.charCodeAt(1));出力「101」
concat() メソッド:
1 つ以上の文字列を String オブジェクトの元の値に連結するために使用されます。元の String オブジェクトは変更されません。
次のようにコードをコピーします。
var oStringObj = 新しい String("hello ");
var sResult = oStringObj.concat("world");//oStringObj+"world"; の方が一般的です。
alert(sResult);//「hello world」を出力します
alert(oStringObj);//「こんにちは」を出力します
IndexOf() メソッドと lastIndexOf() メソッドは、別の文字列内の指定された部分文字列の位置を返します (部分文字列が見つからない場合は -1)。これら 2 つのメソッドの違いは、indexOf() は文字列の先頭 (位置 0) から部分文字列の検索を開始するのに対し、lastIndexOf() は文字列の末尾から部分文字列の検索を開始することです。
localeCompare() は、文字列を比較します (アルファベット順に比較し、後のものが大きくなります)。このメソッドには、比較される文字列というパラメーターが 1 つあり、次の 3 つの値のいずれかを返します。
1. String オブジェクトがパラメーター内の文字列の前にアルファベット順に配置されている場合、負の数値が返されます (最も一般的なのは -1 ですが、実際の戻り値は実装によって決まります)。
2. String オブジェクトがパラメータの文字列と等しい場合、0 が返されます。
3. String オブジェクトがパラメータ内の文字列の後にアルファベット順に配置されている場合は、正の数を返します (最も一般的なのは 1 ですが、実際の戻り値は実装によって決まります)。
スライス() メソッドとサブストリング() メソッド:
どちらのメソッドも処理対象の文字列の部分文字列を返し、1 つまたは 2 つのパラメータを受け入れます。第 1 パラメータは取得する部分文字列の開始位置、第 2 パラメータは取得する部分文字列の末尾よりも前の位置です (終端位置の文字は戻り値に含まれません)。 2 番目の引数を省略した場合、終了ビットはデフォルトの文字列の長さになります。これらのメソッドはどちらも String オブジェクト自体の値を変更しません。
次のようにコードをコピーします。
var oStringObj = new String("hello world");
alert(oStringObj.slice(3));//「lo world」を出力します
alert(oStringObj.slice(3,7));//「低」を出力します
注: 負のパラメータの場合、slice() メソッドは文字列の長さをパラメータに追加し、substring() メソッドはそれを 0 として扱います (つまり、無視されます)。
次のようにコードをコピーします。
var oStringObj = new String("hello world");
alert(oStringObj.slice(-3));//出力「rld」は逆フェッチと同等です
alert(oStringObj.substring(-3));//「hello world」を出力します
alert(oStringObj.slice(3,-4));//「低」を出力します
alert(oStringObj.substring(3,-4));//「hel」を出力します substring() は常に、開始ビットとして小さい数値を使用し、終了ビットとして大きい数値を使用します。
toLowerCase()、toLocalLowerCase()、toUpperCase()、および toLocaleUpperCase():
最初の 2 つのメソッドは文字列をすべて小文字に変換し、後の 2 つのメソッドは文字列をすべて大文字に変換するために使用されます。 toLocalLowerCase() メソッドと toLocaleUpperCase() メソッドは、特定の地域に基づいて実装されます。
覚えておいてください: String クラスのすべてのプロパティとメソッドは、擬似オブジェクトであるため、String プリミティブ値に適用できます。
5.演算子のインスタンス
typeof 演算子を使用して値を格納するために参照型を使用する場合、どの型のオブジェクトが参照されても「object」が返されるという問題があります。 instanceof メソッドでは、開発者はオブジェクトが特定の型であることを明示的に確認する必要があります。のように:
次のようにコードをコピーします。
var oStrObj = new String("hello world");
alert(oStrObjinstanceofString);//「true」を出力します