欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Prototype源碼淺析 Number部分

 更新時間:2012年01月16日 00:22:55   作者:  
Prototype在原生對象的基礎(chǔ)上擴(kuò)展,分別是Object,F(xiàn)unction,String,Number,Array,Date,前面分析了Object,F(xiàn)unction,String,還剩下Number,Array,Date
Number部分方法比較少,一共有8個:

toColorPart: 將 Number 對象轉(zhuǎn)換為具有兩位數(shù)字的十六進(jìn)制形式
succ: 返回當(dāng)前 Number 對象的下一個值,即當(dāng)前值加一
times: 采用 Ruby 的風(fēng)格來封裝一個標(biāo)準(zhǔn)的 [0...n] 循環(huán)
toPaddedString:將當(dāng)前 Number 對象轉(zhuǎn)換為字符串,如果轉(zhuǎn)換后的字符串長度小于 length 指定的值,則用 0 在左邊補(bǔ)足其余的位數(shù)
abs: 返回當(dāng)前 Number 對象的絕對值。
round: 返回當(dāng)前 Number 對象四舍五入后的整數(shù)值。
ceil: 返回大于等于當(dāng)前 Number 對象的最小整數(shù)值。
floor: 返回小于等于當(dāng)前 Number 對象的最大整數(shù)值。

其中一個重要的方法是toPaddedString。Number對象重寫了toString方法:
NumberObject.toString(radix)
參數(shù) 描述
radix 可選。規(guī)定表示數(shù)字的基數(shù),使 2 ~ 36 之間的整數(shù)。若省略該參數(shù),則使用基數(shù) 10。但是要注意,如果該參數(shù)是 10 以外的其他值,則 ECMAScript 標(biāo)準(zhǔn)允許實(shí)現(xiàn)返回任意值。
復(fù)制代碼 代碼如下:

function toPaddedString(length,radix){
var string = this.toString(radix || 10);//先將數(shù)字轉(zhuǎn)換成相應(yīng)的進(jìn)制
return '0'.times(length - string.length) + string;//times方法在String中擴(kuò)展的,將一個字符重復(fù)n遍
}

有了這個方法,就有一個比較有用的延伸就是toColorPart,可用于CSS中的顏色轉(zhuǎn)換:
復(fù)制代碼 代碼如下:

function toColorPart() {
return this.toPaddedString(2, 16);
}

既然是CSS顏色轉(zhuǎn)換,因此數(shù)字就要求在[0-255]范圍內(nèi)。

console.log((10).toColorPart());//0a
有一個和String中同名的方法succ,作用也差不多,String中是按照字符表來遞加的,Number中是按照自然數(shù)的順序來的。
復(fù)制代碼 代碼如下:

function succ() {
return this + 1;
}

console.log((10).succ());//11
從這個方法出發(fā),來一個簡單的0-n的數(shù)組
復(fù)制代碼 代碼如下:

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函數(shù)來得到times函數(shù):
復(fù)制代碼 代碼如下:

function times(iterator, context){
this.range().forEach(iterator, context);//源碼中使用的是R()方法
return this;
}

復(fù)制代碼 代碼如下:

var s = '';
(5).times(function(item){
s += item;
});
console.log(s);//01234

除去上面幾個方法,其他的方法就是將Math的靜態(tài)方法擴(kuò)展到Number對象上【說法不準(zhǔn)確,意會··=。=】
復(fù)制代碼 代碼如下:

function abs() {
return Math.abs(this);
}
function round() {
return Math.round(this);
}
function ceil() {
return Math.ceil(this);
}
function floor() {
return Math.floor(this);
}

相關(guān)文章

最新評論