JavaScript函数绑定Demo以及函数Currying柯里化
来源:互联网 发布:linux关闭oracle服务 编辑:程序博客网 时间:2024/05/29 10:41
例1:
<!DOCTYPE html><html><head> <title>Function Binding Example</title> <script type="text/javascript" src="EventUtil.js"></script></head><body> <input type="button" id="my-btn" value="Click Me" /> <script type="text/javascript"> function bind(fn, context){ return function(){ return fn.apply(context, arguments); }; } var handler = { message: "Event handled", handleClick: function(event){ alert(this.message + ":" + event.type); } }; var btn = document.getElementById("my-btn"); EventUtil.addHandler(btn, "click", bind(handler.handleClick, handler)); </script></body></html>例2:
<!DOCTYPE html><html><head> <title>Function Binding Example</title> <script type="text/javascript" src="EventUtil.js"></script></head><body> <p>This only works in browsers that natively support <code>Function.prototype.bind()</code>.</p> <input type="button" id="my-btn" value="Click Me" /> <script type="text/javascript"> var handler = { message: "Event handled", handleClick: function(event){ alert(this.message + ":" + event.type); } }; var btn = document.getElementById("my-btn"); EventUtil.addHandler(btn, "click", handler.handleClick.bind(handler)); </script></body></html>例3:柯里化1:Currying 的重要意义在于可以把函数完全变成"接受一个参数、返回一个值"的固定形式。
<!DOCTYPE html><html><head> <title>Function Currying Example</title></head><body> <script type="text/javascript"> function curry(fn){ var args = Array.prototype.slice.call(arguments, 1); return function(){ var innerArgs = Array.prototype.slice.call(arguments), finalArgs = args.concat(innerArgs); return fn.apply(null, finalArgs); }; } function add(num1, num2){ return num1 + num2; } var curriedAdd = curry(add, 5); alert(curriedAdd(3)); //8 var curriedAdd2 = curry(add, 5, 12); alert(curriedAdd2()); //17 </script></body></html>例4:柯里化2:
<!DOCTYPE html><html><head> <title>Function Currying Example</title> <script type="text/javascript" src="EventUtil.js"></script></head><body> <input type="button" id="my-btn" value="Click Me" /> <script type="text/javascript"> function bind(fn, context){ var args = Array.prototype.slice.call(arguments, 2); return function(){ var innerArgs = Array.prototype.slice.call(arguments), finalArgs = args.concat(innerArgs); return fn.apply(context, finalArgs); }; } var handler = { message: "Event handled", handleClick: function(name, event){ alert(this.message + ":" + name + ":" + event.type); } }; var btn = document.getElementById("my-btn"); EventUtil.addHandler(btn, "click", bind(handler.handleClick, handler, "my-btn")); </script></body></html>例5:柯里化3:
<!DOCTYPE html><html><head> <title>Function Currying Example</title> <script type="text/javascript" src="EventUtil.js"></script></head><body> <p>This only works in browsers that natively support <code>Function.prototype.bind()</code>.</p> <input type="button" id="my-btn" value="Click Me" /> <script type="text/javascript"> var handler = { message: "Event handled", handleClick: function(name, event){ alert(this.message + ":" + name + ":" + event.type); } }; var btn = document.getElementById("my-btn"); EventUtil.addHandler(btn, "click", handler.handleClick.bind(handler, "my-btn")); </script></body></html>
0 0
- JavaScript函数绑定Demo以及函数Currying柯里化
- 函数-JavaScript 中的 函数 currying 柯里化
- 函数柯里化(Currying)
- Scala 函数柯里化(Currying)
- 函数柯里化function currying
- Scala 函数柯里化(Function currying)
- Swift函数柯里化(Currying)简谈
- 前端开发者进阶之函数柯里化Currying
- 前端开发者进阶之函数柯里化Currying
- 函数式编程概念:柯里化(currying)
- 一道题看透函数柯里化(currying)
- 什么是js函数的currying /柯里化?
- 函数式中的 currying
- 函数式中的Currying
- JavaScript中的柯里化(currying)
- Scala——函数Currying
- JavaScript函数绑定
- javascript函数绑定
- Python通过pymsql操作Mysql数据库环境搭建
- 《后台开发核心技术与应用实践》(三)
- Qt分割窗口QSplitter类
- lua table打印
- csharp 003引用类型及string下面常用方法
- JavaScript函数绑定Demo以及函数Currying柯里化
- 学习Javascript闭包(Closure)
- Android开发——ListView局部刷新的实现
- javaSE_07Java中类和对象-封装特性--练习
- 基于贪心算法的区间问题
- 快速排序
- SplayTree--BZOJ1500
- malloc(0)会发生什么?
- JMeter自动生成测试Report