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 相关文章推荐
jQuery EasyUI API 中文文档 - NumberBox数字框
Oct 13 Javascript
javascript工具库代码
Mar 29 Javascript
JS中的数组的sort方法使用示例
Jan 22 Javascript
不使用ajax实现无刷新提交表单
Dec 21 Javascript
基于JavaScript判断浏览器到底是关闭还是刷新(超准确)
Feb 01 Javascript
基于百度地图实现产品销售的单位位置查看功能设计与实现
Oct 21 Javascript
原生js仿淘宝网商品放大镜效果
Feb 28 Javascript
js实现1,2,3,5数字按照概率生成
Sep 12 Javascript
谈谈React中的Render Props模式
Dec 06 Javascript
node错误处理与日志记录的实现
Dec 24 Javascript
JS+canvas画布实现炫酷的旋转星空效果示例
Feb 13 Javascript
vue中使用mxgraph的方法实例代码详解
May 17 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
从C/C++迁移到PHP——判断字符类型的函数
2006/10/09 PHP
php递归列出所有文件和目录的代码
2008/09/10 PHP
简化php模板页面中分页代码的解析
2009/02/06 PHP
PHP实现通过中文字符比率来判断垃圾评论的方法
2014/10/20 PHP
PHP策略模式定义与用法示例
2017/07/27 PHP
使用户点击后退按钮使效三行代码
2007/07/07 Javascript
JavaScript 权威指南(第四版) 读书笔记
2009/08/11 Javascript
jquery ajax提交表单数据的两种实现方法
2010/04/29 Javascript
用JavaScript玩转游戏物理(一)运动学模拟与粒子系统
2010/06/19 Javascript
Jquery为单选框checkbox绑定单击click事件
2012/12/18 Javascript
document.createElement()用法
2013/03/13 Javascript
jquery获取特定name所有选中的checkbox,支持IE9标准模式
2013/03/18 Javascript
js中function()使用方法
2013/12/24 Javascript
Array栈方法和队列方法的特点说明
2014/01/24 Javascript
整理Javascript基础入门学习笔记
2015/11/29 Javascript
JS点击缩略图整屏居中放大图片效果
2017/07/04 Javascript
javascript trie前缀树的示例
2018/01/29 Javascript
jQuery 实现倒计时天,时,分,秒功能
2018/07/31 jQuery
Vue CLI 3搭建vue+vuex最全分析(推荐)
2018/09/27 Javascript
浅谈针对Vue相同路由不同参数的刷新问题
2018/09/29 Javascript
微信小程序wxml列表渲染原理解析
2019/11/27 Javascript
vue-quill-editor的使用及个性化定制操作
2020/08/04 Javascript
JavaScript 实现继承的几种方式
2021/02/19 Javascript
python解决字典中的值是列表问题的方法
2013/03/04 Python
python 执行文件时额外参数获取的实例
2018/12/18 Python
python实现IOU计算案例
2020/04/12 Python
python怎么对数字进行过滤
2020/07/05 Python
Athleta官网:购买女士瑜伽服、技术运动服和休闲运动服
2020/11/12 全球购物
客服主管岗位职责
2013/12/13 职场文书
《月球之谜》教学反思
2014/04/10 职场文书
中文专业求职信
2014/06/20 职场文书
2015年信息化建设工作总结
2015/07/23 职场文书
Python中快速掌握Data Frame的常用操作
2021/03/31 Python
python文本处理的方案(结巴分词并去除符号)
2021/05/26 Python
Python list列表删除元素的4种方法
2021/11/01 Python
分享提高 Python 代码的可读性的技巧
2022/03/03 Python