Prototype在原生對象的基礎上擴充,分別是Object,Function,String,Number,Array,Date,前面分析了Object,Function,String,還剩下Number,Array,Date。
Number部分方法比較少,一共有8個:
toColorPart: 將 Number 對象轉換為具有兩位元字的十六進位形式
succ: 返回當前 Number 對象的下一個值,即當前值加一
times: 採用 Ruby 的風格來封裝一個標準的 [0...n] 迴圈
toPaddedString:將當前 Number 對象轉換為字串,如果轉換後的字串長度小於 length 指定的值,則用 0 在左邊補足其餘的位元
abs: 返回當前 Number 對象的絕對值。
round: 返回當前 Number 對象四捨五入後的整數值。
ceil: 返回大於等於當前 Number 對象的最小整數值。
floor: 返回小於等於當前 Number 對象的最大整數值。
其中一個重要的方法是toPaddedString。Number對象重寫了toString方法:
NumberObject.toString(radix)
| 參數 |
描述 |
| radix |
可選。規定表示數位基數,使 2 ~ 36 之間的整數。若省略該參數,則使用基數 10。但是要注意,如果該參數是 10 以外的其他值,則 ECMAScript 標準允許實現返回任意值。 |
function toPaddedString(length,radix){
var string = this.toString(radix || 10);//先將數字轉換成相應的進位
return '0'.times(length - string.length) + string;//times方法在String中擴充的,將一個字元重複n遍
}
有了這個方法,就有一個比較有用的延伸就是toColorPart,可用於CSS中的色彩轉換:
function toColorPart() {
return this.toPaddedString(2, 16);
}
既然是CSS色彩轉換,因此數字就要求在[0-255]範圍內。
console.log((10).toColorPart());//0a
有一個和String中同名的方法succ,作用也差不多,String中是按照字元表來遞加的,Number中是按照自然數的順序來的。
function succ() {
return this + 1;
}
console.log((10).succ());//11
從這個方法出發,來一個簡單的0-n的數組
function range(){
var ret = [0];
for(var i = 0; i < this - 1; i++){
ret.push(i.succ());
}
return ret;
}
console.log((10).range());//[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
暫時用這個range函數來得到times函數:
function times(iterator, context){
this.range().forEach(iterator, context);//源碼中使用的是R()方法
return this;
}
var s = '';
(5).times(function(item){
s += item;
});
console.log(s);//01234
除去上面幾個方法,其他的方法就是將Math的靜態方法擴充到Number對象上【說法不準確,意會··=。=】
function abs() {
return Math.abs(this);
}
function round() {
return Math.round(this);
}
function ceil() {
return Math.ceil(this);
}
function floor() {
return Math.floor(this);
}
轉載請註明來自小西山子【http://www.cnblogs.com/xesam/】
本文地址:http://www.cnblogs.com/xesam/archive/2012/01/14/2322558.html