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