javascript类型转换
来源:互联网 发布:明日之丈 知乎 编辑:程序博客网 时间:2024/06/06 03:19
1.实现如下函数,运算结果如以下预期结果:
add(1)(2) // 3add(1, 2, 3)(10) // 16add(1)(2)(3)(4)(5) // 15
2.解题思路
首先想到的是Array.prototype.reduce以及高阶函数,即将函数作为返回值返回进行链式调用,reduce() 方法对累加器和数组中的每个元素 (从左到右)应用一个函数,将其减少为单个值。但是这种方法只能算出前两个式子,当链式操作的参数多余两个时无法返回结果。所以这里采用重写valueOf()和toString()方法。
function add () { var args = Array.prototype.slice.call(arguments);//合并参数 var fn = function () { var arg_fn = Array.prototype.slice.call(arguments); return add.apply(null, args.concat(arg_fn)); } fn.valueOf = function () { return args.reduce(function(a, b) { return a + b; }) } return fn;}
该思想是进行一种循环,只有最后一次调用才真正调用到valueOf(),前几次都是为了合并参数,最后一次调用返回fn函数,即调用了fn.valueOf().
该链式调用巧妙的通过valueOf实现了链式调用。
阅读全文
0 0
- JavaScript 类型 及 类型转换
- javascript:类型转换
- javascript:类型转换
- JavaScript中的类型转换
- javascript类型转换
- Javascript中的类型转换
- javascript中的类型转换
- javascript的类型转换
- javascript 强制类型转换
- Javascript 类型转换
- javascript类型转换
- JavaScript类型转换
- JavaScript类型转换
- Javascript强制类型转换
- javascript中的类型转换
- JavaScript中的类型转换
- javascript类型转换表
- JavaScript 类型转换
- android与服务端交互的两种方式
- Url 初步介绍
- 聊一聊PV和并发、以及计算web服务器的数量的方法
- 数据压缩实验七——MEPG音频编码
- 高通snapdragon平台下编译生成运行Android可执行程序小白教程
- javascript类型转换
- 【Shawn-poj】Binary Tree
- Mysql分区表 介绍和使用
- Android 仿iphone提醒事项(四)
- 【bzoj1566】【管道取珠】竟然是dp题(浅尝ACM-E)
- hdu 1050 Moving Tables(贪心)
- Android 生产者模式和消费者模式 --- 【应用场景】
- C++课堂笔记0706
- 数据结构面试题