【JavaScript】包装類とタイプの転換について


一、メタタイプシステムとオブジェクトタイプシステム.
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.');