【JavaScript】包装類とタイプの転換について
5910 ワード
一、メタタイプシステムとオブジェクトタイプシステム.
1、元タイプシステム:undefined、bollan、number、string、function、object
2、オブジェクトタイプシステム:
メタタイプの
object
の一つの分岐
3、
メタデータで「包装類」を経由して包装します.
装着して得られたオブジェクトは、元のメタデータと同じデータではなく、両者の値が等しいだけです.
4、
Boolean、Number、Stringはそれぞれブックレン、number、stringの包装類です.
二、明示的な包装:
1、
undefined
特殊な数値に変換できます.
NaN、
文字列
'undefined'
ブール値
false
.
1)
どの値も変換できます.
number
タイプの値.有効な数に変換できない場合
値は、結果は同じです.
NaN
.に対する
NaN
実は数値演算に参加できる値です.
このような処理の目的は、表現をできるだけ値を求めることができるようにすることです.
2)N
アンバー
値をブール値に変換すると、ゼロ以外の値はすべて
true
ゼロと
NaN
すべてが
false
.
Number.NEGATIVE_INFINITY
:
(-Number.MAXUVALE)
より小さい値
Number.POSITIVE_INFINITY
:
(Number.MAXUVALE)
より大きな値
Number.MIN_VALE
:ゼロに近い正の数値
Number.MAX_VALE
:最大の正の値
Global.Infinity
:
Number.POSITIVE_INFINITY
の初期値
3)
Number
値は文字列に変換する際に極めて複雑な内部規則があります.したがって、明示式を使用しない限り
変換
しないと保証できません.
Number
はい、
文字列という変換された出力フォーマット.
Number.NEGATIVE_INFINITY
:変換
'-Infinity'
Number.POSITIVE_INFINITY
:変換
'Infinity'
Global.Infinity
:変換
'Infinity'
Global.NaN
:変換
'NaN'
これ以外の数値は、例えば数値的な意味を持つ文字列に変換できます.
'5 e-324'
.
3、
bollan
値の変換:
1)
true
和
false
常に数値に変換されます.
1
和
0
.
2)
bollan
値の
true
和
false
常に文字列に変換されます.
「true」
和
「false」
.
1)文字列には、空の文字列のみがあります.
ブール値に変換できます.
false
を選択します.他の(値のある)文字列は変換後になります.
true
2)例:
1)
parseInt()
これをサポートします.
2~36
(0-9、A-Z 124 a-z)
間の「
ラジクス
」パラメータで使用する進行を指定します.
を選択します.文法は以下の通りです
parseInt(aString、[radix])
2)
呼び出し
parseInt()
変換が成功しない場合は、
NaN
.もし
ラジクス
を選択します
16
にかかわらず
aString
プレフィックスがあるかどうか
0 x
」をクリックします.
16
プロセスもし
ラジクス
を選択します
8
にかかわらず
aString
プレフィックスがあるかどうか
0
」を押すと、この文字列は8を押します.
進数処理
指定しないなら
ラジクス
を選択します.数値直接量宣言で使用する規則を使用します.プレフィックスがあります.
「
0 x
」の処理を行います
16
進数文字列には、プレフィックスがあります.
0
」の処理は
8
入力文字列
parseInt()
和
パーrseFloa t()
もう一つの特性は常に可能な限り変換結果を得ることである.にしても
文字列の中には
(
プレフィックスの
)
部分的に変換できると、この変換も成功します.時々ここで
この特性はとても使いやすいです.例えば、
WEB
開発中に出会った.
CSS
の属性値の単位
(pt/px
など
)
私たちは簡単に使うことができます.
パーrseFloa t()
これをクリアして、他の演算に参加しやすくします.
例1:
1、
一つのきっかけとする
タイプ(例えばオブジェクト)で値を演算すると、先に呼び出します.
valueOf()
方法で値を取る
2、
データが値の種類であれば、直接値演算に参加します.さもなくば
もし
valueOf()
値タイプデータを返します.このデータの参加値で演算します.さもなくば
使用
toString()
返した文字列は演算に参加します.
1、元タイプシステム:undefined、bollan、number、string、function、object
2、オブジェクトタイプシステム:
メタタイプの
object
の一つの分岐
3、
メタデータで「包装類」を経由して包装します.
装着して得られたオブジェクトは、元のメタデータと同じデータではなく、両者の値が等しいだけです.
4、
Boolean、Number、Stringはそれぞれブックレン、number、stringの包装類です.
二、明示的な包装:
var
v1 = 100,
v2 = 'hello, world!',
v3 = true;
//
alert( Number(v1) );
alert( String (v2) );
alert( Boolean(v3) );
:
// Object()
alert( Object (v1) );
alert( Object (v2) );
alert( Object (v3) );
三、隠蔽包装:「包装」行為はアクセス行為中に発生します.var data = 100;
alert(data instanceof Number); //false,instanceof " "
//alert('constructor' in data); // , in
//" "
data.constructor = Number; //
alert(data['constructor']); //function Number() { [native code] }
//data.toString = function () { }
data.toString(); // ,
alert(data.toString); //function toString() { [native code] }
// delete
alert(delete data.toString); //true
四、値の種類間の変換.1、
undefined
特殊な数値に変換できます.
NaN、
文字列
'undefined'
ブール値
false
.
// : undefined
var value = undefined;
// NaN
alert(10 + value);
if (!value) {
alert('' + value); //undefined
}
2、numberの変換:1)
どの値も変換できます.
number
タイプの値.有効な数に変換できない場合
値は、結果は同じです.
NaN
.に対する
NaN
実は数値演算に参加できる値です.
このような処理の目的は、表現をできるだけ値を求めることができるようにすることです.
2)N
アンバー
値をブール値に変換すると、ゼロ以外の値はすべて
true
ゼロと
NaN
すべてが
false
.
Number.NEGATIVE_INFINITY
:
(-Number.MAXUVALE)
より小さい値
Number.POSITIVE_INFINITY
:
(Number.MAXUVALE)
より大きな値
Number.MIN_VALE
:ゼロに近い正の数値
Number.MAX_VALE
:最大の正の値
Global.Infinity
:
Number.POSITIVE_INFINITY
の初期値
3)
Number
値は文字列に変換する際に極めて複雑な内部規則があります.したがって、明示式を使用しない限り
変換
しないと保証できません.
Number
はい、
文字列という変換された出力フォーマット.
Number.NEGATIVE_INFINITY
:変換
'-Infinity'
Number.POSITIVE_INFINITY
:変換
'Infinity'
Global.Infinity
:変換
'Infinity'
Global.NaN
:変換
'NaN'
これ以外の数値は、例えば数値的な意味を持つ文字列に変換できます.
'5 e-324'
.
3、
bollan
値の変換:
1)
true
和
false
常に数値に変換されます.
1
和
0
.
2)
bollan
値の
true
和
false
常に文字列に変換されます.
「true」
和
「false」
.
var checked = true;
var i = false;
if (checked) {
i++;
}
alert(i); //1
var i = false;
i += checked;
// i += !!checked;
alert(i); //1
alert(true + false); //1
4、stringの転換:1)文字列には、空の文字列のみがあります.
ブール値に変換できます.
false
を選択します.他の(値のある)文字列は変換後になります.
true
2)例:
alert('0022' - 1); // 21
alert('00.22' * 10); // 2.2
alert('.22' * '100.'); // 2.2
/**
* 1
* 0 , 8
* : 12
*/
alert(033 - 15);
/**
* 2
* 0 , ( )
* :18
*/
alert('033' - 15);
五、パーrseInt()とパーrseFloat()1)
parseInt()
これをサポートします.
2~36
(0-9、A-Z 124 a-z)
間の「
ラジクス
」パラメータで使用する進行を指定します.
を選択します.文法は以下の通りです
parseInt(aString、[radix])
2)
呼び出し
parseInt()
変換が成功しない場合は、
NaN
.もし
ラジクス
を選択します
16
にかかわらず
aString
プレフィックスがあるかどうか
0 x
」をクリックします.
16
プロセスもし
ラジクス
を選択します
8
にかかわらず
aString
プレフィックスがあるかどうか
0
」を押すと、この文字列は8を押します.
進数処理
指定しないなら
ラジクス
を選択します.数値直接量宣言で使用する規則を使用します.プレフィックスがあります.
「
0 x
」の処理を行います
16
進数文字列には、プレフィックスがあります.
0
」の処理は
8
入力文字列
// “0” 8
alert( parseInt('033' - 15) ); //18
alert( parseInt('033') - 15 ); //12
alert(
parseInt(033 - 15)
); //12
alert( 033 - 15); //12
3)parseInt()
和
パーrseFloa t()
もう一つの特性は常に可能な限り変換結果を得ることである.にしても
文字列の中には
(
プレフィックスの
)
部分的に変換できると、この変換も成功します.時々ここで
この特性はとても使いやすいです.例えば、
WEB
開発中に出会った.
CSS
の属性値の単位
(pt/px
など
)
私たちは簡単に使うことができます.
パーrseFloa t()
これをクリアして、他の演算に参加しやすくします.
例1:
<!-- HTML -->
<input id="UserName" style="width: 10em">
<script>
var el = document.get ElementById('UserName');
el.style.width = parseFloat(el.style.width) * 2 + 'em';
</script>
例2:var v = '4F';
// radix ( “ 0x” )
alert(parseInt(v)); //4
六、valueOf()1、
一つのきっかけとする
タイプ(例えばオブジェクト)で値を演算すると、先に呼び出します.
valueOf()
方法で値を取る
2、
データが値の種類であれば、直接値演算に参加します.さもなくば
もし
valueOf()
値タイプデータを返します.このデータの参加値で演算します.さもなくば
使用
toString()
返した文字列は演算に参加します.
/**
* : String valueOf() toString()
*/
String.prototype.valueOf = function() {
return this; // this
}
String.prototype.toString = function() {
return 'hi, ';
}
// hi, world.'
var str = new String('hello, ');
alert(str + 'world.');