`

AS 函数作用域、函数闭包、限界方法

 
阅读更多

 

作用域链(scope chain):

任何时候函数开始执行,都有一些对象和属性被创建。

首先,一个叫做activation object(活化对象)的特殊对象被创建,用来储存参数和该方法体中的其他本地变量或函数。这个对象你无法直接获取到,因为这属于内部机制。

其次,一个scope chain(作用域链)被创建,它包含一个有序列表,列表中的对象是由Flash Player或Adobe AIR用来核查标识符声明的。

任何执行中的函数都有一个由内部属性保存的作用域链。对于嵌套函数,作用域链开始于其自身的activation object,然后是其父函数的activation object。作用域链按照这种方式继续下去,直到global object(全局对象)。全局对象在ActionScript程序开始时被创建,包含了所有的全局变量和函数。

 

 

函数闭包(function closure):

一个函数闭包是一个对象,包含了该函数及其lexical environment(词汇环境)的快照。函数的词汇环境包含该函数所有的变量、属性、方法和用域链内的对象,以及他们的值。函数在对象或类的外部运行时,就会创建函数闭包。函数闭包保留了它被定义时的作用域,这在有些情况下会导致一些很有意思的结果,比如:函数作为参数或者返回值在不同的作用域中时。

 

 

bound method(限界方法):

限界方法,有时候也叫做方法闭包,指的是从其实例中抽出来的方法,包括作为某函数的参数或者作为某函数的返回值这两种情况。

 

限界方法和函数闭包类似的是,它虽然被从实例中抽取出来,但保留了本身的词汇环境。关键的不同是,在限界方法中,this关键字的引用仍然是实现该方法的实例。也就是说,限界方法中,this引用总是指向实现该方法的最初的对象。而函数闭包中,this关键字则是普通意义上的,即总是指向该方法被调用时关联的对象。

 

唉,关于定义还是有点模糊。

分享到:
评论

相关推荐

    javascript 闭包、匿名函数、作用域链

    JavaScript中的闭包、匿名函数和作用域链是编程中至关重要的概念,它们是理解JavaScript运行机制的关键。在本文中,我们将深入探讨这三个概念,并通过实际示例来展示它们的运用。 首先,我们来讨论“闭包”。闭包是...

    夯实基础中篇-图解作用域链和闭包.doc

    在JavaScript编程中,作用域链和闭包是两个至关重要的概念,它们对于理解代码执行机制以及函数内部如何访问和管理变量至关重要。让我们深入探讨这两个概念。 首先,**作用域链**是JavaScript中的一种机制,它定义了...

    JavaScript 中的闭包是指内部函数可以访问外部函数作用域中的变量

    在JavaScript中,闭包(Closure)是一个极其关键的概念,它使得内部函数能够访问到其外部函数的作用域内的变量,即使外部函数已经执行完毕。这一特性是基于JavaScript的函数作用域规则以及函数本身可以作为值进行...

    JavaScript中的作用域链和闭包

    闭包是一种特殊的作用域现象,它允许函数访问并操作在其外部定义但不在其作用域内的变量。闭包通常发生在函数内部创建另一个函数的情况。这个内部函数可以记住并访问其外部函数的变量,即使外部函数已经执行完毕。...

    JS的作用域与闭包

    闭包是JavaScript中一个高级概念,它允许一个函数记住并访问它外部作用域中的变量,即使该函数在其外部作用域之外执行也是如此。 ##### 1. 闭包的定义 闭包是由函数和与其相关的引用环境组合而成的实体,这个环境...

    10-作用域链和闭包:代码中出现相同的变量,JavaScript引擎是如何选择的?_For_vip_user_0011

    "作用域链和闭包:代码中出现相同的变量,JavaScript引擎是如何选择的?" 标题“作用域链和闭包:代码中出现相同的变量,JavaScript引擎是如何选择的?”中,我们可以看到JavaScript引擎是如何选择相同的变量的。...

    Python 闭包,函数分隔作用域,nonlocal声明非局部变量操作示例

    本文实例讲述了Python 闭包,函数分隔作用域,nonlocal声明非局部变量操作。分享给大家供大家参考,具体如下: 实例对象也可以实现闭包的功能,不过实例对象消耗的资源(内存)比闭包多。 demo.py(闭包): # 闭包,...

    深度探讨javascript函数的原型链和闭包

    闭包是理解作用域链的关键概念,它允许内部函数记住其定义时的作用域,即使外部函数已经完成执行。闭包常常用于封装变量和实现私有方法,提高代码的封装性和安全性。 总结一下,JavaScript中的函数不仅是一种数据...

    一篇文章搞懂:词法作用域、动态作用域、回调函数及闭包

    在编程领域,理解和掌握词法作用域、动态作用域、回调函数以及闭包是非常重要的概念,它们直接影响着代码的执行逻辑和内存管理。下面我们将详细探讨这些主题。 首先,词法作用域(Lexical Scoping)是一种变量作用...

    python 包、模块、函数与变量作用域视频讲解

    4. 闭包作用域(Closure Scope):当一个内嵌函数引用其外部函数的局部变量时,形成的特殊作用域。 理解作用域规则非常重要,因为这决定了在哪里可以访问和修改变量。例如,如果你想在函数内部改变全局变量,需要...

    JS匿名函数、闭包

    - **内存保留**:如果一个函数返回了一个闭包,那么该函数的作用域(包括所有的局部变量)将会一直保留在内存中,直到闭包不再被引用。 ##### 应用实例: ```javascript function createCounter() { let count = ...

    005课-继承作用域闭包.rar

    在JavaScript编程语言中,"继承、作用域和闭包"是三个非常重要的概念,它们构成了JavaScript面向对象特性和函数式编程的核心。在这个005课的主题中,我们将深入探讨这三个概念,理解它们如何协同工作,以及如何在...

    理解javascript函数式编程中的闭包(closure)_.docx

    闭包是一种特殊的函数,它能记住其定义时的作用域,即使在函数执行完毕后,仍然可以访问到该作用域内的变量。在JavaScript中,每个函数都具备创建闭包的能力,但通常在嵌套函数中闭包的概念更为突出。 闭包的特点...

    原型、作用域、闭包的完整解释(一)

    最后,闭包是一种特殊的函数,它可以访问其自身、外部函数以及全局作用域中的变量,即使在其外部函数已经执行完毕后。闭包的主要用途是实现数据封装,创建私有变量和方法,以及在异步操作中保持状态。理解闭包的关键...

    python 函数 函数的偏函数 高阶函数 返回函数 匿名函数 闭包.md

    闭包使得内部函数能够访问并记住外部函数的作用域中的变量。 **示例代码:** ```python def outer_function(x): def inner_function(y): return x + y return inner_function closure = outer_function(10) ...

    求闭包 属性集闭包 函数依赖的闭包

    1. 由用户输入函数依赖,当用户输入End时,表示所有依赖都输入完毕。(即函数依赖是由用户自己定的,程序中不能假定某个具体的依赖)。 2. 函数依赖的形式是ABC, ABE这样的形式,为了简单起见,我们假定所有的属性...

    javascript从作用域链谈闭包

    闭包是指有权访问另外一个函数作用域中的变量的函数 这概念有点绕,拆分一下。从概念上说,闭包有两个特点: 1、函数 2、能访问另外一个函数作用域中的变量 在ES 6之前,Javascript只有函数作用域的概念,没有...

    Web前端面试题目JavaScript(作用域,原型。原型链,闭包,封装函数).txt

    前端面试题,包含JavaScript的闭包,作用域,原型,原型链,上下文环境以及DOM,BOM封装函数深度克隆,以及一些常见的·JS问题,试题简单但是容易混淆,作为前端工程师必考题

    闭包作用域

    在JavaScript中,闭包(Closure)是一个非常重要的概念,它允许一个函数访问并操作其外部作用域中的变量,即使该函数在其外部作用域之外被调用。这种特性使得闭包成为一种强大的工具,能够实现诸如数据封装、私有...

Global site tag (gtag.js) - Google Analytics