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 相关文章推荐
Input 特殊事件onpopertychange和oninput
Jun 17 Javascript
深入理解JavaScript系列(19):求值策略(Evaluation strategy)详解
Mar 05 Javascript
jQuery实现右侧显示可向左滑动展示的深色QQ客服效果代码
Oct 23 Javascript
jquery实现邮箱自动填充提示功能
Nov 17 Javascript
Google 地图事件实例讲解
Aug 06 Javascript
详解cordova打包成webapp的方法
Oct 18 Javascript
jQuery属性选择器用法实例分析
Jun 28 jQuery
jQuery利用cookie 实现本地收藏功能(不重复无需多次命名)
Nov 07 jQuery
vue el-table实现行内编辑功能
Dec 11 Javascript
JavaScript 面向对象程序设计详解【类的创建、实例对象、构造函数、原型等】
May 12 Javascript
解决Vue的文本编辑器 vue-quill-editor 小图标样式排布错乱问题
Aug 03 Javascript
Vue左滑组件slider使用详解
Aug 21 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
编写漂亮的代码 - 将后台程序与前端程序分开
2008/04/23 PHP
php导入excel文件到mysql数据库的方法
2015/01/14 PHP
学习php设计模式 php实现建造者模式
2015/12/07 PHP
PHP解压ZIP文件到指定文件夹的方法
2016/11/17 PHP
ThinkPHP开发--使用七牛云储存
2017/09/14 PHP
JS取文本框中最小值的简单实例
2013/11/29 Javascript
jquery 取子节点及当前节点属性值的方法
2014/08/24 Javascript
原生Javascript封装的一个AJAX函数分享
2014/10/11 Javascript
jQuery验证插件 Validate详解
2014/11/20 Javascript
页面向下滚动ajax获取数据的实现方法(兼容手机)
2016/05/24 Javascript
JS hashMap实例详解
2016/05/26 Javascript
详解VUE 定义全局变量的几种实现方式
2017/06/01 Javascript
利用VS Code开发你的第一个AngularJS 2应用程序
2017/12/15 Javascript
基于jquery ajax的多文件上传进度条过程解析
2019/09/11 jQuery
JS 设计模式之:单例模式定义与实现方法浅析
2020/05/06 Javascript
详解JavaScript 事件流
2020/09/02 Javascript
python 回调函数和回调方法的实现分析
2016/03/23 Python
python微信跳一跳系列之棋子定位颜色识别
2018/02/26 Python
浅谈python配置与使用OpenCV踩的一些坑
2018/04/02 Python
python操作excel文件并输出txt文件的实例
2018/07/10 Python
不知道这5种下划线的含义,你就不算真的会Python!
2018/10/09 Python
python 获取页面表格数据存放到csv中的方法
2018/12/26 Python
python 读取dicom文件,生成info.txt和raw文件的方法
2019/01/24 Python
Python3变量与基本数据类型用法实例分析
2020/02/14 Python
Python捕获异常堆栈信息的几种方法(小结)
2020/05/18 Python
HTML5的新特性(1)
2016/03/03 HTML / CSS
Snapfish英国:在线照片打印和个性化照片礼品
2017/01/13 全球购物
俄罗斯家居用品购物网站:Евродом
2020/11/21 全球购物
标准毕业生自荐信范文
2013/11/04 职场文书
大课间体育活动方案
2014/03/12 职场文书
《美丽的丹顶鹤》教学反思
2014/04/22 职场文书
库房管理员岗位职责
2015/02/12 职场文书
周恩来的四个昼夜观后感
2015/06/03 职场文书
python开发飞机大战游戏
2021/07/15 Python
MongoDB数据库之添删改查
2022/04/26 MongoDB
css之clearfix的用法深入理解(必看篇)
2023/05/21 HTML / CSS