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 相关文章推荐
零基础学JavaScript最新动画教程+iso光盘下载
Jan 22 Javascript
JavaScript 中的日期和时间及表示标准介绍
Aug 21 Javascript
node.js中的Socket.IO使用实例
Nov 04 Javascript
javascript实现连续赋值
Aug 10 Javascript
js动态获取子复选项并设计全选及提交的实现方法
Jun 24 Javascript
js封装tab标签页实例分享
Dec 19 Javascript
CSS+jQuery实现简单的折叠菜单
Dec 20 Javascript
vue自定义过滤器创建和使用方法详解
Nov 06 Javascript
通过JavaScript下载文件到本地的方法(单文件)
Mar 17 Javascript
js/jQuery实现全选效果
Jun 17 jQuery
JavaScript相等运算符的九条规则示例详解
Oct 20 Javascript
vue 项目中当访问路由不存在的时候默认访问404页面操作
Aug 31 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
php学习笔记 类的声明与对象实例化
2011/06/13 PHP
php页面函数设置超时限制的方法
2014/12/01 PHP
PHP中的traits实现代码复用使用实例
2015/05/13 PHP
2款PHP无限级分类实例代码
2015/11/11 PHP
php each 返回数组中当前的键值对并将数组指针向前移动一步实例
2016/11/22 PHP
PHP示例演示发送邮件给某个邮箱
2019/04/03 PHP
jquery1.4后 jqDrag 拖动 不可用
2010/02/06 Javascript
jquery关于页面焦点的定位(文本框获取焦点时改变样式 )
2010/09/10 Javascript
jquery.autocomplete修改实现键盘上下键自动填充示例
2013/11/19 Javascript
js在输入框屏蔽按键,只能键入数字的示例代码
2014/01/03 Javascript
JavaScript中setUTCMilliseconds()方法的使用详解
2015/06/12 Javascript
jQuery制作圣诞主题页面 更像是爱情影集
2016/08/10 Javascript
javascript实现去除HTML标签的方法
2016/12/26 Javascript
jQuery实现单击按钮遮罩弹出对话框效果(2)
2017/02/20 Javascript
vue.js利用Object.defineProperty实现双向绑定
2017/03/09 Javascript
input 标签实现输入框带提示文字效果(两种方法)
2017/10/09 Javascript
JS小球抛物线轨迹运动的两种实现方法详解
2017/12/20 Javascript
移动web开发之touch事件实例详解
2018/01/17 Javascript
JavaScript私有变量实例详解
2019/01/24 Javascript
微信小程序云开发 搭建一个管理小程序
2019/05/17 Javascript
webpack3升级到webpack4遇到问题总结
2019/09/30 Javascript
Python3实现的腾讯微博自动发帖小工具
2013/11/11 Python
python爬虫实战之爬取京东商城实例教程
2017/04/24 Python
老生常谈Python之装饰器、迭代器和生成器
2017/07/26 Python
itchat和matplotlib的结合使用爬取微信信息的实例
2017/08/25 Python
python删除过期log文件操作实例解析
2018/01/31 Python
python os.path.isfile()因参数问题判断错误的解决
2019/11/29 Python
python 6.7 编写printTable()函数表格打印(完整代码)
2020/03/25 Python
python实现数字炸弹游戏程序
2020/07/17 Python
Europcar葡萄牙:葡萄牙汽车和货车租赁
2017/10/13 全球购物
数控专业应届生求职信
2013/11/27 职场文书
个人委托书格式
2014/04/04 职场文书
国庆促销活动总结
2014/08/29 职场文书
酒店工程部经理岗位职责
2015/04/09 职场文书
七年级作文之秋游
2019/10/21 职场文书
Dubbo+zookeeper搭配分布式服务的过程详解
2022/04/03 Java/Android