美文网首页程序员
js闭包和Extjs动态创建菜单的回调函数理解

js闭包和Extjs动态创建菜单的回调函数理解

作者: 九笔人生 | 来源:发表于2018-01-03 13:10 被阅读0次

官方定义

闭包指的是词法表示包括不被计算的函数,也就是说函数可以使用函数之外定义的变量

也可以认为就是在函数中定义的函数,可以访问外部函数,而且使用过程中,访问的是记忆的变量,而不是当然调用时上下文的变量,有点像java中class的对象。

extjs中动态创建组件,带有回调函数:

var menubar=Ext.GetComp("menu")
for (var i in jsonobj){
    var handle=function(){
    var url=jsonobj[i].url
    return function{
            window.location.href=url
        }
    }
var button={
    text:windows[jsonobj[i].label],
    handler:handler(),
    iconCls:"icon-btn,
    width:110
    }
menubar.menu.addItem(button)
}

其中url变量需要用闭包记忆起来,不然实际回调函数执行的时候用的是当前上下文(本例是循环结束时的值即i+1)的变量。

闭包总结起来有两个好处:

  • 变量作用范围在闭包内部,避免变量冲突,有利于面相对象设计。

  • 记忆变量值,回调函数能找到定义时的那个变量。

相关文章

  • js闭包和Extjs动态创建菜单的回调函数理解

    官方定义 闭包指的是词法表示包括不被计算的函数,也就是说函数可以使用函数之外定义的变量 也可以认为就是在函数中定义...

  • 闭包--Closure

    学习Ajax模式之前,需要对闭包和回调函数的概念有所理解. 闭包的概念 当一个函数内调用另一个函数,同时这个函数引...

  • 【Swift】关于闭包的几种写法

    闭包 闭包是一个特殊的函数,经常用于回调 简单举个例子:在方法中定义闭包实现回调传值 尾随闭包:1.如果闭包是函数...

  • 浅析js闭包函数和回调函数

    一.闭包函数: 闭包是js中的一大特色,也是一大难点。简单来说,所谓闭包就是说,一个函数能够访问其函数外部作用域中...

  • php之闭包函数(Closure)

    php闭包函数(Closure) JS闭包 js和php闭包使用和区别

  • Python装饰器以及闭包的一些理解

    先看看闭包问题,什么是闭包? 闭包就是可以由另外一个函数动态生成的函数,并且可以改变和存储函数外创建的标量的值。 ...

  • ★ 回调函数、闭包

    普通函数和回调函数有什么区别? 什么是闭包? 普通函数和回调函数主要是在调用方式上的区别: 普通函数的调用:调用程...

  • 闭包和回调函数

    闭包 函数A内定义了一些变量和内部函数B,而且在B中使用了A的变量,然后返回函数B,那么B就称为A的闭包(闭包也是...

  • 第02天(函数、工程管理)_03

    11_函数类型.go 12_回调函数.go 13_匿名函数和闭包.go 14_闭包捕获外部变量的特点.go 15_...

  • 工具栏菜单(Toolbar)小记

    创建菜单 Activity类提供了管理菜单的回调函数,需要选项菜单时,直接调用Activity的onCreateO...

网友评论

    本文标题:js闭包和Extjs动态创建菜单的回调函数理解

    本文链接:https://www.haomeiwen.com/subject/uqshnxtx.html