Function的应用
来源:互联网 发布:结构设计软件体系 编辑:程序博客网 时间:2024/05/22 11:30
Function()构造器创建的函数与函数直接量声明、匿名函数不同,它在任意位置创建的实例,都处于创建的全局闭包中;原因,在于Function()构造器传入的参数全部是字符串,因此不必要与函数局部变量建立引用。由此带来的一个好处是:在任意多层的函数内部,都可以通过Function()创建函数而不至于导致闭包不能释放。
例一、function myFun(){var value = "this is local";var foo = function(){console.log(value);}foo(); //this is local(function(){console.log(value);})() //this is localfunction f1(){console.log(value);}f1(); //this is localvar f2 = new Function('console.log(value)');f2(); //this is global}myFun();
例二、var obj = new Object();var events = {m1:"clicked",m2:"changed",m3:"mousemove"};for(e in events){obj[e] = function(){ console.log(events[e]); }}for(i in obj){obj[i]();}//结果://mousemove//mousemove//mousemove
例三、var obj = new Object();var events = {m1:"clicked",m2:"changed",m3:"mousemove"};for(e in events){obj[e] = new Function("console.log(events['"+e+"'])");}for(i in obj){obj[i]();}//结果://clicked//changed//mousemove
解决例二的途径还有以下方式:
var obj = new Object();var events = {m1:"clicked",m2:"changed",m3:"mousemove"};for(e in events){obj[e] = function(aValue){return function(){console.log(events[aValue]);}}(e)}或者for(e in events){ function(){ var aValue = e; obj[e]=function(){ console.log(events[aValue]); } }();}或者for(e in events){ (obj[e] = function(){ console.log(events[arguments.callee.aValue]); } ).aValue=e;}for(i in obj){ obj[i]();}//结果://clicked//changed//mousemove
- Function的应用
- Sub 和 Function 的应用
- Function中的apply函数的应用
- TOJ 3777Function Problems 三分法的应用
- Z-function的构造与应用
- [JavaWeb]表单提交的验证(onSubmit和function的应用)。
- Sort function 应用
- HDU2824 The Euler function 欧拉函数的应用
- tr1::bind与tr1::function的用法与具体应用
- (function(){}})(); and (function(){}());的区别?
- function和function()的区别
- function和function()的区别
- $(function 和 function的区别
- SAP中的一些FUNCTION应用
- SAP中的一些FUNCTION应用
- SAP中的一些FUNCTION应用
- 欧拉函数的应用 : TOJ 3611 Calculation 2 && TOJ 3300 Euler Function
- javascript学习记录(二)-function函数的应用之sort()函数详解
- 冒泡排序
- 游戏引擎剖析(三)
- 浅谈Log4j的扩展 (一)
- 有关进程的一些基本概念
- 浅谈Log4j的扩展 (二)
- Function的应用
- 游戏引擎剖析(五)
- 游戏引擎剖析(六)
- 游戏引擎剖析(七)
- 基于jboss-as-web-7.0.2.Final的mysql数据源配置
- C#中数据类型转换
- 【转载】linux 文件解压命令
- 2011年末小结
- Struts2学习笔记(2)-----Struts2注释(下)