javascript add(1)(2)(3)(4)解析
2015-11-30 23:01
656 查看
<!DOCTYPE html> <html> <head> <title></title> <script type="text/javascript"> function load(){ alert(add(1)(2)(3)(4)); } function add(x){ //由于要一个数记住每次的计算值,所以使用了闭包,在addFake中记住了x的值,第一次调用add(),初始化了addFake,并将x保存在addFake的作用链中,然后返回addFake //保证了第二次调用的是addFake函数,后面的计算都是在条用addFake, 因为addFake也是返回的自己,保证了第二次之后的调用也是调用addFake,而在addFake中将传入的 //参数与保存在作用链中x相加并付给x,这样就保证了计算;但是在计算完成后还是返回了addFake这个函数,这样就获取不到计算的结果了,我们需要的结果是一个计算的数字 //那么怎么办呢,首先要知道JavaScript中,打印和相加计算,会分别调用toString或valueOf函数,所以我们重写addFake的toString和valueOf方法,返回x的值 function addFake(y){ x = x + y; return addFake; }; addFake.toString = addFake.valueOf = function(){return x;}; return addFake; } </script> </head> <body onload="load()"> </body> </html>
转自/article/8874294.html
相关文章推荐
- JS window.open 使用说明
- JS中的prototype
- WebKit之JSCell的继承关系图
- javascript权威指南学习笔记(四)
- jsp和servlet的区别
- JS 之 验证数字
- Angular JS 学习笔记(二)
- JS中如何输出空格
- Servlet和JSP的本质和区别
- JavaScript函数部分补充
- jsp EL表达式取值过程、page和pagecontext的区别
- JavaScript高级程序设计--对象,数组(栈方法,队列方法,重排序方法,迭代方法)
- JavaScript获取两个数之间的任意随机数
- C# Json.NET序列化之Newtonsoft.Json
- JSP取得绝对路径
- extjs中去掉form表单标签后面的冒号
- javascript继承
- [JSP]JSP基本元素以及和Servlet的对应关系
- JSP session对象以及图片验证码的实现
- 从Servlet,JSP到MVC