JavaScript灵活性
2015-07-06 11:18
591 查看
一提及JavaScript,大家都会想到其基于对象、简单、跨平台,然而其灵活性也值得大家津津乐道的!
由于 Number 的实例就是数值,在数值上调用某个方法,数值会自动转为实例对象
2['add'](3);
//5 调用方法之所以写成8['add'],而不是8.add,是因为数值后面的点,会被解释为小数点,而不是点运算符。
(2).add(3);
//5
等价于:
2..add(3); //5第一个点解释为小数点,第二个点解释为点运算符。
2['add'](3)['sub'](1);//4
级联调用
总之,现在我们可以在数值上直接调用方法了。
参考自:http://www.ruanyifeng.com/blog/2015/02/flexible-javascript.html
一、数值调用方法
Number.prototype.add = function(x){ return this + x; };
由于 Number 的实例就是数值,在数值上调用某个方法,数值会自动转为实例对象
2['add'](3);
//5 调用方法之所以写成8['add'],而不是8.add,是因为数值后面的点,会被解释为小数点,而不是点运算符。
(2).add(3);
//5
等价于:
2..add(3); //5第一个点解释为小数点,第二个点解释为点运算符。
Number.prototype.sub = function(x){ return this - x; }
2['add'](3)['sub'](1);//4
级联调用
总之,现在我们可以在数值上直接调用方法了。
二、数值调用属性
Number.prototype.double = function(){ return this + this; }; Number.prototype.square = function(){ return this * this; }; (2).double().square(); //16 2['double']()['square'](); //16 2..double().square(); //16但是,可以将上述两个方法的调用改为读取属性的方式,ES5规定,每个对象的属性都有一个取值方法get,用来自定义该属性的读取操作。
<pre name="code" class="javascript">Number.prototype = Object.defineProperty(Number.prototype,"double",{ get:function(){ return this + this; } }); Number.prototype = Object.defineProperty(Number.prototype,"square",{ get:function(){ return this * this; } }); (2).double.square; //16 2['double']['square']; //16
参考自:http://www.ruanyifeng.com/blog/2015/02/flexible-javascript.html
相关文章推荐
- 图解Javascript上下文与作用域
- 一些达成共识的JavaScript编码风格约定
- JSTL(fn函数)
- Jsonp post 跨域方案
- Google JavaScript代码风格指南
- Javascript 删除数组的指定元素
- Scala处理json数据
- js中获取URL参数的方法
- JavaScript一个类继承中实现
- 一个比较轻巧好用的js分页插件,可ajax可url
- Js获取当前日期时间及其它操作
- canvas连线
- Dynamics.js - 创建逼真的物理动画的 JS 库
- javascript运动详解
- JavaScript JsTree实例
- JSON 常用数据转换
- jsoup解析HTML及简单实例
- 浅谈Javascript实现继承的方法
- Console命令详解,让调试js代码变得更简单
- JavaScript保存并运算页面中数字类型变量的写法