Adobe ColdFusion 8

Scopes In CFC

译者: Sophia

作用域 说明
 Variables variables 作用域是对整个CFC范围有效。在一个方法中或是一个结构体中用varables作用域设定的value值同样可以对CFC中的其他方法和结构体有效。我常常在站点中像使用application varables一样频繁使用varables (cfc的varables变量可以在cfm中使用,也可以在继承的cfc中使用)。
 This

This 作用域就类似于将varables变量定义为全局变量,This作用域的范围就是当下的cfc,它代表当前cfc的范围.This作用域常被定义于cfc的function之外.例如,如果foo是cfc的一个实例的话你可以定义foo.name = "rabid"在function之外,这就表示你将foo结构的key:Name赋上一个值rabid,你还可以输出这个foo.name.因为这样的定义如此方便,许多人习惯this作用域来代替在cfc中写相关set data和get data的方法.在这些方法中被传送到varables作用域.例如:<cfset foo.name = "Rabid"/>(如果foo是cfc的一个实例)可以被写成<cfset this.name = "Rabid" />

Var

Var作用域变量只存在于当前method中,你可以用这个作用域来定义一些只在当前method起作用的变量,例如:query names,loop iterators,等等.var变量在使用中发生错误,是很难被调试出来,这点很棘手,不像其他作用域的变量,你不需要把作用域声明写在定义变量前面.而var需要,例如<cfset var myString = "Hello World" />

Arguments Arguments的作用域包含所有在function中传递的Argument变量,比如如果调用代码中传入一个name = "Rabid"的value给某函数,那么这个函数中就有一个Argument.name表示这个传入的name.
Form, URL,
Application,
Session, Server,
CGI, Client,
Request, Cookie
这些变量作用域一般不提倡在CFC中使用.如果这样使用,会使你的cfc更不易在程序之间的通用
Caller, Attributes Caller, Attributes并不在cfc中使用,他一般是被用在自定义标签中使用
Super

当没有定义变量作用域范围时,super作用域会作为指针将父级CFC中的方法指向当前cfc.如果一个cfc继承了另一个cfc类似的方法名,子cfc可以使用super继承父cfc的方法.例如:<cfset result = super.somemethod() >