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

7 篇文章 0 订阅

 

作用域链(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关键字则是普通意义上的,即总是指向该方法被调用时关联的对象。

 

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值