?? 前面的幾篇博文分別介紹了[對象](http://blog.csdn.net/u011043843/article/details/27366379)、[字符串](http://blog.csdn.net/u011043843/article/details/27959563)、[數組](http://blog.csdn.net/u011043843/article/details/28294213)、[日期](http://blog.csdn.net/u011043843/article/details/29191771)等內建類,本篇將介紹Boolean/Math/Function/Arguments類
## 一、使用Boolean類處理邏輯值
?? Boolean類是JS的一個封裝類,可以用于獲取Boolean對象的原始數據類型或者字符串表示形式。new Boolean(value)用于創建一個Boolean對象,Boolean(value)它的參數轉換成一個原始的布爾值,并且返回這個值。Boolean對象只有兩個值:true或者false.
?? value參數可以省略。如果省略 value 參數,或者設置為 0、-0、null、""、false、undefined 或 NaN,則該對象設置為 false。否則設置為 true(即使 value 參數是字符串 "false")。
?? Boolean對象有三個方法:

但是在ECMAScript 5中,Boolean對象新增一個toJSON()方法,可以將邏輯值序列化為JSON格式字符串返回。
~~~
<script type="text/javascript">
var b = new Boolean("false");
document.write("b的值是:"+b+"<br/>");
document.write("b的源代碼是:"+b.toSource()+"<br/>");
document.write("b的原始值是:"+b.valueOf()+"<br/>");
document.write("b的字符串值是:"+b.toString()+"<br/>");
</script>
~~~
FF中結果(在Google只能輸出第一個[????])

## 二、使用Number類進行數字類型轉換
?? 在JavaScript中內建了Number類對數字數據進行處理。Number類是Number數據類型的一個簡單封裝,可以用Number類對象處理數據的原始值。在調用Number類的方法時要用new Number(value)創建Number對象,但是對于Number類的屬性則是不需要,因為屬性均是靜態的。Number(value)函數用于轉換,轉換失敗返回NaN。
?? Number類的屬性:

?? Number類的方法

~~~
<span style="font-size:18px;">var num = new Number("1234");
document.write("轉為16進制:"+num.toString(16)+"<br/>"); //默認是10進制
document.write("本地化:"+num.toLocaleString()+"<br/>");
var num1 = new Number("2.1415");
document.write("保留2位小數:"+num1.toFixed(2)+"<br/>"); //參數范圍[0,20],表示保留的小數位數,不足補0
document.write("保留3位小數:"+num.toFixed(3)+"<br/>");
document.write("指定3個長度:"+num1.toPrecision(3)+"<br/>"); //有效長度,參數范圍[0,21]
document.write("指數表示:"+num1.toExponential(2)+"<br/>"); //參數范圍[0,20],表示需要的小數位數。
document.write("原值:"+num1.valueOf()); //默認是0,即new Number()</span>
~~~
結果

如果不在參數指定的范圍之內,均會拋出RangeError異常。在ECMAScript 5中新增了toJSON()方法,將數值序列化為JSON格式字符串并返回。
## 三、使用Math類進行復雜的數學運算
?? Math 對象并不像 Date 和 String 那樣是對象的類,因此沒有構造函數 Math(),像 Math.sin() 這樣的函數只是函數,不是某個對象的方法,通過把 Math 作為對象使用就可以調用其所有屬性和方法。
??? Math類的屬性:

?? Math類的方法

## 四、使用Function和arguments類
?? 4.1??? Function類:JavaScript中的每個函數都由一個Function對象表示,均有三個實用方法:call()、apply()和bind()。都是用來調用函數的。

~~~
<span style="font-size:18px;">var theFunction = function(arg)
{
document.write(arg+"<br/>");
document.write(arguments+": 第二個參數:"+arguments[1]+"<br/>");
document.write(this == myObj);
}
var myObj = new Object;
var arr = new Array("a","b","c");
theFunction.apply(myObj,arr);
theFunction.call(null,1,2,3);
</span>
~~~
結果:

與call()相比,apply()方法有如下不同:
1、如果在Javascript中調用的任何函數使用了this關鍵字,那么可以使用apply()指定this關鍵字所代表的對象值。
2、如果在Javascript中調用的任何函數內使用了arguments關鍵字,那么可以使用apply()指定arguments關鍵字所代表的參數值。
?? 2、Arguments類和arguments屬性
?? Arguments類代表函數參數作為數組元素作為存儲,可以按訪問數組元素的方法訪問參數。arguments.length表示參數的數目。但是,不能用for...in循環訪問arguments對象,需用for循環。
arguments有兩個重要屬性:
arguments.callee屬性用來表示當前正在執行函數的引用,等價于arguments.callee.apply(null)或者arguments.callee.call(null);????? oFunction.caller屬性表示當前正在執行函數的調用者的引用,如果沒有其他函數調用則返回null,等價于oFunction.caller.apply(null)或者oFunction.caller.call(null).
??????
??
- 前言
- 一
- 二:變量
- 三:數據運算
- 四:流程控制
- 五:內建的全局函數
- 六:自定義函數
- 七:面向對象編程(OOP)
- 八:靜態成員、靜態類、枚舉、重載和覆蓋
- 九:原型鏈本質論
- 十:ECMAScript 5 增強的對象模型
- 十一:處理字符串---String類和正則表達式
- 十二:數組、多維數組和符合數組(哈希映射)
- 十三:處理日期和時間
- 十四:JavaScript內建類
- 十五:BOM之源---window對象
- 十六:BOM之源---BOM基本應用
- 十七:BOM新成就(1)--客戶端存儲數據(Storage實現)
- 十八:BOM新成就(1)--客戶端存儲數據(Web SQL DataBase實現)
- 十九--HTML5 DOM新標準---處理文檔元信息和管理交互能力
- 二十---XMLHttpRequest和AJAX解決方案