jsタイプの転換と引用タイプの詳細解(Boolean_)Number_String)


一、タイプ変換
1.文字列ECMAScriptに変換されたBoolean値、数字および文字列の元の値の面白さは、それらが疑似オブジェクトであることを意味し、これはそれらが実際に属性と方法を持っていることを意味する。

var sColor = "blue";
alert(sColor.length);//outputs "4"
要するに、3つの主要な元の値Boolean値、数字と文字列にはtoString()の方法があります。ECMAScriptで定義されているすべてのオブジェクトにtoString()の方法があります。これは疑似オブジェクトでも本物のオブジェクトでもあります。
Boolean型のtoString()方法は「true」または「false」だけを出力します。結果は変数の値によって決まります。

var bFound = false;
alert(bFound.toString());//outputs "false"
NumberタイプのtoString()方法は特殊です。標準モードとベースモードがあります。STring()方法は該当する文字列だけで数字値を出力します。

var iNum1 = 10;
var fNum2 = 10.0;
alert(iNum1.toString()); //outputs "10"
alert(fNum2.toString()); //outputs "10"
は、NumberタイプのtoString()方式のベースパターンを採用しており、異なるベース(進数ベース)で数字を出力することができる。

var iNum = 10;
alert(iNum.toString(2));  //outputs "1010"
alert(iNum.toString(8));  //outputs "12"
alert(iNum.toString(16)); //outputs "A"
2.デジタルECMAScriptに変換することは、非デジタルの元の値をデジタルに変換する2つの方法、すなわちパー秒Int()とパーパー秒eFloat()を提供する。注意:Stringタイプ(Numberを除く)に対してこれらの方法を呼び出してこそ、他のタイプに対して戻ってくるのはNaNです。
例えば、

var iNum1 = parseInt("1234blue");//returns 1234
var iNum2 = parseInt("oxA"); //returns 10
var iNum3 = parseInt("22.5"); //returns 22
var iNum4 = parseInt("blue"); //returns NaN
parseInt()方法は、2進数、8進数、16進数、または他の任意の進数の文字列を10進数の整数に変換することができるベースパターンがある。二つ目のパラメータ指定はどちらの進数で解析しますか?

var iNum1 = parseInt("AF",16);// returns 175
var iNum2 = parseInt("10",2); // returns 2
var iNum3 = parseInt("10",8); //returns 8
var iNum4 = parseInt("10",10); //returns 10
は、10進数がプリアンブル0を含むなら、基数10を採用したほうがいいと説明しています。そうでないと、8進数の値が得られます。

var iNum1 = parseInt("010");  // returns 8
var iNum2 = parseInt("010",8); //returns 8
var iNum3 = parseInt("010",10);//returns 10
parseFloat()メソッドは、パーrseInt()メソッドの処理と同様に、位置0から各文字を調べ始め、最初の非アクティブな文字が見つかるまで、その後、その文字の前の文字列を数字に変換する。この方法では、最初に出現する小数点が有効文字です。2つの小数点を使うと、2番目の小数点は無効とみなされます。この方法を使うもう一つの違いは、文字列は10進数で浮動小数点を表しなければならないことです。

var fNum1 = parseFloat("1234blue"); //returns 1234.0
var fNum2 = parseFloat("0xA"); //returns NaN
var fNum3 = parseFloat("22.5"); //returns 22.5
var fNum4 = parseFloat("22.34.5");//returns 22.34
var fNum5 = parseFloat("0908");//returns NaN
var fNum6 = parseFloat("blue");//returns NaN
3.強制タイプ変換ECMAScriptで利用可能な3つの強制タイプ変換は以下の通りである。
(1).Boolean(value)与えられた値をBoolean型に変換します。変換する値が少なくとも1文字の文字列、0以外の数字またはオブジェクトである場合、Boolean()関数はtrueに戻ります。この値が空の文字列、数字0、undefinedまたは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)は、与えられた値を数値(整数または浮動小数)に変換する。パーrseInt()とパーrseFloat()の方法は最初の無効文字の前の文字列だけを変換したことを覚えていますので、「4.5.6」は「4.5」に変換されます。Number()で強制タイプ変換を行い、「4.5.6」はNaNに戻ります。文字列全体の値は数字に変換できないためです。文字列が完全に変換された場合、Number()は、パーrseInt()メソッドを呼び出すかそれともパーrseFloat()メソッドを呼び出すかを判断します。例えば、

Number(false);//0
Number(true);//1
Number(undefined);//NaN
Number(null);//0
Number("5.5");//5.5
Number("56");//56
Number("5.6.7");//NaN
Number(new Object());//NaN
Number(100);//100
(3).String(value)は、与えられた値を文字列に変換する。toStering()メソッドを呼び出す唯一の違いは、nullまたはundefined値の強制タイプ変換は、エラーを起こさずに文字列を生成することができることである。ECMAScriptは「オブジェクト定義」を定義しています。論理的には他のプログラミング言語のクラスに相当します。
1.Object類ECMAScriptのすべてのクラスはこのクラスで継承されています。Object類のすべての属性と方法は他のクラスに現れます。
Objectクラスの属性:
(1).Costructor----作成対象の関数への参照(ポインタ)。Objectクラスでは、このポインタは元のobject()関数を指します。
(2).Prottype――当該オブジェクトの原型に対する参照。すべてのクラスについては、デフォルトではObjectオブジェクトの一例を返します。
Object類の方法:
(1).HasOwnProperty――対象に特定の属性があるかどうかを判断する。この属性は文字列で指定しなければなりません。
(2).Is PrototypeOf(object)----このオブジェクトが他のオブジェクトの原型かどうかを判断します。
(3).PropertyIs Enumerable――与えられた属性がfor.in文で列挙できるかどうかを判断する。
(4).ToString()----オブジェクトに戻る元の文字列表現。異なるECMAScript実装は異なる値を持つ。
(5).ValueOf()----オブジェクトに最適な元の値を返します。多くの種類について、この方法の戻り値は、toString()の戻り値と同じである。
2.Boolean類はECMAScriptではBooleanオブジェクトをあまり使わないので、使っても分かりにくいです。例えば、

var s1 = String(null);//"null"
var oNull = null;
var s2 = oNull.toString();//causes an error
の理由:Boolean式では、すべてのオブジェクトが自動的にtrueに変換されるからです。
3.Number類Number.MAX_VALEなどの特殊値はすべてNumber類の静的属性です。数字の対象のNumber元の値を得るには、valueOf()の方法が必要です。var iNumber=oNumber Object.valueOf();Object類から引き継ぐ標準的な方法のほかに、Number類にはいくつかの数値を扱う専用の方法があります。
tofixed()メソッド:指定された桁数の数字を持つ文字列を返します。方法は0から20桁の小数を持つ数字を表します。この範囲を超える値はエラーを起こします。

var oFalseObject  = new Boolean(false);
var bResult = oFalseObject  && true;//outputs  true;
toExponential()方法:科学的な記数法で表される数字の文字列形式を返します。この方法には出力する小数点以下の桁数を指定するパラメータもあります。例えば、

var oNumberObject = new Number(99);
aler(oNumberObject.toFixed(2));//outputs "99.00"
toPrecsion()方法:最も有意義な形式に従って、数値の所定の形式または指数形式を返します。指数を含まない数値の総数を表すパラメータがあります。

var oNumberObj = new Number(99);
alert(oNumberObj.toExponential(1));//outputs "9.9e+1"
は、toPrecsion()方法が、できるだけ本物に近い数を得るために、数を丸めることができることを示している。例えば、

var oNumberObj = new Number(99);
alert(oNumberObj.toPrecision(1));//outputs "1e+2" ==100
toFixed()、toExponential()およびtoPrecsion()の方法は、正確な小数点以下の桁数で正確に1つの数を表すために丸め動作を行う。
toLocareStering()方法:ページ上にフォーマット表示できます。5210.50のように5,21.05と表示されますが、その値を使用する場合は、パーrseFloat($N_)を使うべきです。YJE").value.replace(/,/g,");を選択します。
注意:Booleanオブジェクトと似ています。Numberオブジェクトも重要ですが、潜在的な問題が発生しないように、このようなオブジェクトを使わないようにします。可能であれば、すべて数字の元の表示法を使います。
4.StringタイプStringオブジェクトのvalueOf()方法とtoString()方法は、Stringタイプの元の値に戻ります。

var oNumberObj = new Number(99);
alert(oNumberObj.toPrecision(2));// outputs "99"
alert(oNumberObj.toPrecision(3));// outputs "99.0"
String類は属性lengthを有し、文字列の文字数です。
指定された位置にある文字列を含む文字列を返します。

alert(oStringObj.valueOf() == oStringObj.toString());//outputs "true"
charCodeAt()方法:指定された位置にある文字コードを含む文字列を返します。

var oStringObj = new String("hello world");
alert(oStringObj.length);outputs "11"
concat()方法:1つ以上の文字列をStringオブジェクトの元の値に接続するためのものです。元のStringオブジェクトは不変です。

var oStringObj = new String("hello world");
alert(oStringObj.charAt(1));outputs "e"
indexOf()およびlastIndexOf()方法は、指定されたサブストリングが他の文字列の位置(または−1である場合、このサブストリングが見つからない)に返される。この二つの方法の違いは大きいです。indexOf()は文字列の先頭(位置0)からサブストリングを検索します。lastIndexOf()は文字列の最後からサブストリングを検索します。
locaree Compare()は、文字列を比較します(文字順で比較すると、後ほど大きくなります)。この方法は、比較を行う文字列のうち、次の3つの値のうちの1つを返します。1.Stringオブジェクトがアルファベット順にパラメータの文字列の前に並べば、負の値を返します。2.Stringオブジェクトがパラメータの文字列に等しい場合、0を返します。3.Stringオブジェクトがアルファベット順にパラメータの文字列の後に正数を返す場合(最も一般的なのは1ですが、本当の戻りは実現によって決定されます)
slice()とsubstring()の方法:この2つの方法は処理する文字列のサブストリングで、いずれも1つまたは2つのパラメータを受け入れます。最初のパラメータは、取得するサブストリングの開始位置であり、2番目のパラメータは、サブストリングの終了前の位置を取得することである(終了位置の文字には、大きな戻り値が含まれていない)。2番目のパラメータを省略すると、終了ビットはデフォルトで文字列の長さとなります。両方の方法はStringオブジェクト自体の値を変えない。

var oStringObj = new String("hello world");
alert(oStringObj.charCodeAt(1));outputs "101"
注意:負のパラメータに対して、slice()方法は文字列の長さにパラメータを加え、substring()法は0として処理する(つまり無視する)。

var oStringObj = new String("hello ");
var sResult = oStringObj.concat("world");//oStringObj+"world";
alert(sResult);//outputs "hello world"
alert(oStringObj);//outputs "hello"
toLowerCase()、toLocal LowerCase()、toUpperCase()、およびtoLocaleUpperCase():前の2つの方法は文字列をフル小文字に変換し、後の2つの方法は文字列をフル大文字に変換するために用いられる。Local LowerCase()とtoLocaleUpperCase()の方法は特定の領域に基づいて実現される。
覚えてください。Stringクラスのすべての属性と方法は、元のString値に適用されます。
5.instance of演算子は、typeof演算子を使用する際に参照タイプの記憶値を使用すると問題が発生します。参照の種類に関係なく、オブジェクトは「object」に戻ります。instance ofメソッドは、開発者が特定のタイプであることを明確に確認する方法を示します。

var oStringObj = new String("hello world");
alert(oStringObj.slice(3));//outputs "lo world"
alert(oStringObj.slice(3,7));//outputs "lo w"