Prototype源码浅析 Number部分


Posted in Javascript onJanuary 16, 2012

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); 
}
Javascript 相关文章推荐
jQueryUI的Dialog的简单封装
Jun 07 Javascript
手把手教你自己写一个js表单验证框架的方法
Sep 14 Javascript
JavaScript:Div层拖动效果实例代码
Aug 06 Javascript
JS控件ASP.NET的treeview控件全选或者取消(示例代码)
Dec 16 Javascript
node.js中的http.response.getHeader方法使用说明
Dec 14 Javascript
jQuery如何封装输入框插件
Aug 19 Javascript
jQuery.cookie.js使用方法及相关参数解释
Mar 06 Javascript
微信小程序上传图片功能(附后端代码)
Jun 19 Javascript
小程序实现发表评论功能
Jul 06 Javascript
angular6 利用 ngContentOutlet 实现组件位置交换(重排)
Nov 02 Javascript
js 实现 list转换成tree的方法示例(数组到树)
Aug 18 Javascript
js实现消灭星星(web简易版)
Mar 24 Javascript
Prototype源码浅析 String部分(四)之补充
Jan 16 #Javascript
Prototype源码浅析 String部分(二)
Jan 16 #Javascript
深入理解JavaScript系列(11) 执行上下文(Execution Contexts)
Jan 15 #Javascript
深入理解JavaScript系列(10) JavaScript核心(晋级高手必读篇)
Jan 15 #Javascript
深入理解JavaScript系列(9) 根本没有“JSON对象”这回事!
Jan 15 #Javascript
深入理解JavaScript系列(8) S.O.L.I.D五大原则之里氏替换原则LSP
Jan 15 #Javascript
深入理解JavaScript系列(7) S.O.L.I.D五大原则之开闭原则OCP
Jan 15 #Javascript
You might like
自动把纯文本转换成Web页面的php代码
2009/08/27 PHP
php中array_multisort对多维数组排序的方法
2020/06/21 PHP
PHP之正则表达式捕获组与非捕获组(详解)
2015/07/29 PHP
整理php防注入和XSS攻击通用过滤
2015/09/13 PHP
IE和Mozilla的兼容性汇总event
2007/08/12 Javascript
Jquery+ajax请求data显示在GridView上(asp.net)
2010/08/27 Javascript
js Dialog 实践分享
2012/10/22 Javascript
利用cookie记住背景颜色示例代码
2013/11/04 Javascript
实例分析nodejs模块xml2js解析xml过程中遇到的坑
2017/03/18 NodeJs
D3.js进阶系列之CSV表格文件的读取详解
2017/06/06 Javascript
JavaScript门面模式详解
2017/10/19 Javascript
vue-cli随机生成port源码的方法
2019/09/02 Javascript
搭建Vue从Vue-cli到router路由护卫的实现
2019/11/14 Javascript
vue更改数组中的值实例代码详解
2020/02/07 Javascript
vue.js 输入框输入值自动过滤特殊字符替换中问标点操作
2020/08/31 Javascript
详解 javascript对象创建模式
2020/10/30 Javascript
[01:13:17]Secret vs NB 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
[04:16]完美世界DOTA2联赛PWL S2 集锦第一期
2020/11/23 DOTA
由浅入深讲解python中的yield与generator
2017/04/05 Python
python 字典 按key值大小 倒序取值的实例
2018/07/06 Python
python opencv旋转图像(保持图像不被裁减)
2018/07/26 Python
Python根据当前日期取去年同星期日期
2019/04/14 Python
python接口自动化测试之接口数据依赖的实现方法
2019/04/26 Python
django云端留言板实例详解
2019/07/22 Python
torchxrayvision包安装过程(附pytorch1.6cpu版安装)
2020/08/26 Python
python处理写入数据代码讲解
2020/10/22 Python
Haglöfs瑞典官方网站:haglofs火柴棍,欧洲顶级户外品牌
2018/10/18 全球购物
英国领先的独立时装店:Van Mildert
2019/10/28 全球购物
商务英语专业毕业生自荐信
2013/11/05 职场文书
档案保密承诺书
2014/06/03 职场文书
消防安全宣传口号
2014/06/10 职场文书
意外伤害赔偿协议书范本
2014/09/28 职场文书
司法工作人员群众路线对照检查材料思想汇报
2014/09/30 职场文书
单方离婚协议书范本(2014版)
2014/09/30 职场文书
分析MySQL抛出异常的几种常见解决方式
2021/05/18 MySQL
Java的Object类的九种方法
2022/04/13 Java/Android