ホームページ  >  記事  >  ウェブフロントエンド  >  jsの型変換と参照型(Boolean_Number_String)_javascriptスキルを詳しく解説

jsの型変換と参照型(Boolean_Number_String)_javascriptスキルを詳しく解説

WBOY
WBOYオリジナル
2016-05-16 16:56:321106ブラウズ

1. 型変換

1. 文字列に変換します
ECMAScript のブール値、数値、および文字列のプリミティブ値の興味深い点は、それらが疑似オブジェクトであることです。つまり、実際にはプロパティとメソッド 。
例:

コードをコピー コードは次のとおりです:

var sColor = "blue";
alert(sColor.length);//出力 "4"

つまり、3 つの主要なプリミティブ値のブール値、数値、文字列には toString() メソッドがあります。 。 ECMAScript で定義されたすべてのオブジェクトには、擬似オブジェクトであっても実際のオブジェクトであっても、toString() メソッドがあります。

ブール値の toString() メソッドは「true」または「false」を出力するだけで、結果は変数の値によって決まります:

コードをコピー コードは次のとおりです:

var bFound = false;
alert(bFound.toString());//「false」を出力します

数値型 toString() メソッドは特別で、デフォルト モードとベース モードの 2 つのモードがあります。デフォルト モードを使用すると、toString() メソッドは対応する文字列のみを使用して数値を出力します。それは整数、浮動小数点数、または科学的表記法です)。
コードをコピー コードは次のとおりです:

var iNum1 = 10;
var fNum2 = 10.0 ;
alert(iNum1.toString()); //「10」を出力
alert(fNum2.toString()) //「10」を出力

数値型 toString() メソッドの基底モードでは、さまざまな基数 (基数) の数値を出力できます。
コードをコピー コードは次のとおりです:

var iNum = 10;
alert (iNum.toString(2)); //「1010」を出力します
alert(8) //「12」を出力します
alert(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(value)
指定された値をブール型に変換します。
Boolean() 関数は、変換される値が文字列、ゼロ以外の数値、または少なくとも 1 つの文字を含むオブジェクトである場合に true を返します。値が空の文字列、数値 0、未定義、または null の場合は、false を返します。
例:

コードをコピー コードは次のとおりです:

var b1 = Boolean("" ); // false;
var b2 = Boolean("hi");//true
var b3 = Boolean(100);//true
var b4 = Boolean(null) ;//false
var b5 = Boolean(0);//false
var b6 = Boolean(new Object());//true

(2).Number( value)
指定された値を数値 (整数または浮動小数点数) に変換します。
parseInt() メソッドと parseFloat() メソッドは最初の無効な文字の前の文字列のみを変換するため、「4.5.6」は「4.5」に変換されることに注意してください。 Number()、「4.5.6」を使用してキャストすると、文字列値全体を数値に変換できないため、NaN が返されます。文字列を完全に変換できる場合、Number() は parseInt() メソッドを呼び出すか parseFloat() メソッドを呼び出すかを決定します。
例:
コードをコピー コードは次のとおりです。

Number(false) );// 0
数値(true);//1
数値(未定義);//NaN
数値(null);//0
数値("5.5");// 5.5
Number("56");//56
Number("5.6.7");//NaN
Number(new Object());//NaN
Number(100) ;//100

(3).String(value)
指定された値を文字列に変換します。
toString() メソッドの呼び出しとの唯一の違いは、null または未定義の値をキャストすると、エラーが発生せずに文字列が生成されることです。
コードをコピー コードは次のとおりです:

var s1 = String(null);//"null"
var oNull = null;
var s2 = oNull。 ();//エラーが発生します

2. 参照型
参照型は通常、クラスと呼ばれます。参照値が検出されると、オブジェクトが処理されます。 ECMAScript は、他のプログラミング言語のクラスと論理的に同等の「オブジェクト定義」を定義します。

1.Object クラス
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. Boolean クラス
Boolean オブジェクトは ECMAScript ではほとんど使用されず、使用されたとしても理解するのは簡単ではありません。
例:

コードをコピー コードは次のとおりです。

var oFalseObject = new Boolean(false );
var bResult = oFalseObject && true;//true を出力します;

理由: ブール式では、すべてのオブジェクトが自動的に true に変換されます。

3.Number クラス
Number.MAX_VALUE およびその他の特別な値は、Number クラスの静的属性です。数値オブジェクトの Number の元の値を取得するには、次のように valueOf() メソッドを使用します。
var iNumber = oNumberObject.valueOf();
Object クラスから継承された標準メソッドに加えて、Number クラス数値を処理するための特別なメソッドが他にもいくつかあります。

toFixed() メソッド:
は、指定された小数点以下の桁数を持つ数値の文字列表現を返します。このメソッドは小数点以下 0 ~ 20 桁の数値を表現できます。この範囲外の値はエラーとなります。
例:

コードをコピー コードは次のとおりです。

var oNumberObject = new Number(99 );
aler(oNumberObject.toFixed(2));//「99.00」を出力

toExponential() メソッド:
は科学表記法で表現された数値を返します。形状。このメソッドは、出力する小数点以下の桁数を指定するパラメーターも受け取ります。例:
コードをコピー コードは次のとおりです。

var oNumberObj = new Number( 99);
alert(oNumberObj.toExponential(1));//「9.9e 1」を出力

toPrecision() メソッド:
次に従って、あらかじめ決められた形式の数値を返します。最も意味のある形式または指数形式。引数が 1 つあり、それは数値を表すために使用される合計桁数 (指数を除く) です。
コードをコピー コードは次のとおりです。

var oNumberObj = new Number(99);
alert(oNumberObj.toPrecision(1));//outputs "1e 2" ==100

toPrecision() メソッドが数値を近似するように丸めることがわかります。可能な限り現実に近い値の数。
例:
コードをコピー コードは次のとおりです:

var oNumberObj = new Number(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, "")); カンマを置き換えてその値を取得します。

注: Boolean オブジェクトと同様に、Number オブジェクトも重要ですが、潜在的な問題を避けるために慎重に使用する必要があります。可能な限り、数値の生の表現を使用してください。

4. String クラス
String オブジェクトの valueOf() メソッドと toString() メソッドは、String 型の元の値を返します:

コードをコピー コードは次のとおりです:

alert(oStringObj.valueOf() == oStringObj.toString());//「true」を出力します"

文字列クラスには、文字列内の文字数である属性 length があります:
コードをコピー コードは次のとおりです:

var oStringObj = new String("hello world");
alert(oStringObj.length);outputs "11"

注: 文字列に 2 バイト文字が含まれている場合でも、各文字は 1 文字としてのみカウントされます。

charAt() メソッド:
は、指定された位置にある文字を含む文字列を返します:

コードをコピー コードは次のとおりです:

var oStringObj = new String("hello world");
alert(oStringObj.charAt(1));outputs "e"

charCodeAt() メソッド:
は、指定された位置の文字コードを含む文字列を返します:
コードをコピー コードは次のとおりです。次のように:

var oStringObj = new String("hello world");
alert(oStringObj.charCodeAt(1));outputs "101"

concat() メソッド:
は、1 つ以上の文字列を String オブジェクトの元の値に連結するために使用されます。元の String オブジェクトは変更されません。
コードをコピー コードは次のとおりです。

var oStringObj = new String("hello " );
var sResult = oStringObj.concat("world");//oStringObj "world"; より一般的な
alert(sResult);//「hello world」を出力します
alert(oStringObj);/ /outputs " hello"

indexOf() メソッドと lastIndexOf() メソッドは、別の文字列内の指定された部分文字列の位置を返します (部分文字列が見つからない場合は -1)。これら 2 つのメソッドの違いは、indexOf() は文字列の先頭 (位置 0) から部分文字列の検索を開始するのに対し、lastIndexOf() は文字列の末尾から部分文字列の検索を開始することです。

localeCompare()、文字列を比較します (アルファベット順で比較し、後のものほど大きくなります)。このメソッドには、比較される文字列というパラメーターが 1 つあり、次の 3 つの値のいずれかを返します:
1. String オブジェクトがパラメーター内の文字列の前にアルファベット順に配置されている場合、負の数値が返されます (最も一般的なのは-1 ですが、実際の戻り値は実装によって決まります)。
2. String オブジェクトがパラメータの文字列と等しい場合は、0 を返します。
3. String オブジェクトがパラメーター内の文字列の後にアルファベット順に配置されている場合は、正の数値を返します (最も一般的なのは 1 ですが、実際の戻り値は実装によって決まります)

slice() メソッドと substring() メソッド:
これら 2 つのメソッドは、処理される文字列の部分文字列を返し、どちらも 1 つまたは 2 つのパラメーターを受け取ります。第 1 パラメータは取得する部分文字列の開始位置、第 2 パラメータは取得する部分文字列の末尾よりも前の位置です (終端位置の文字は戻り値に含まれません)。 2 番目の引数を省略した場合、終了ビットはデフォルトの文字列の長さになります。これらのメソッドはどちらも String オブジェクト自体の値を変更しません。

コードをコピーします コードは次のとおりです。

var oStringObj = new String("hello world ");
alert(oStringObj.slice(3));//「lo world」を出力
alert(oStringObj.slice(3,7));//「low」を出力

注: 負のパラメータの場合、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));//「low」を出力します
alert(oStringObj.substring(3,-4));//「hel」を出力します substring() は常に置き換えられます小さい番号が開始ビットとして機能し、大きい番号が終了ビットとして機能します。

toLowerCase()、toLocalLowerCase()、toUpperCase()、および toLocaleUpperCase():
最初の 2 つのメソッドは文字列をすべて小文字に変換し、後の 2 つのメソッドは文字列の変換に使用されます。大文字で入力してください。 toLocalLowerCase() メソッドと toLocaleUpperCase() メソッドは、特定の地域に基づいて実装されます。

覚えておいてください: String クラスのすべてのプロパティとメソッドは、擬似オブジェクトであるため、String プリミティブ値に適用できます。

5.instanceof 演算子
typeof 演算子を使用して参照型に値を格納する場合、どのような型のオブジェクトが参照されても、「object」が返されます。 instanceof メソッドでは、開発者はオブジェクトが特定のタイプであることを明示的に確認する必要があります。例:

コードをコピー コードは次のとおりです。

var oStrObj = new String( "hello world" );
alert(oStrObjinstanceof String);//「true」を出力します
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。