冷凝物对象(即通过cfobject调用的CFC)通常是按引用还是按值(在内存中复制)传递的?是否可以强制ColdFusion以任一方式传递对象?
ColdFusion对象是按引用传递的。实际上没有办法按值传递一个对象,但是你可以使用duplicate()函数来创建一个副本。
请注意,在复制某些内容(如CFC、COM、CORBA和Java对象)时,使用duplicate()方法在MX 7版本中无法正常工作。但是在CF 8版本中可以复制CFC。
类似于结构体和CFC这样的复合对象是通过引用传递的,但如果将数组传递给一个UDF,则它是按值传递的。这使得编写像内置数组函数一样改变数组的用户定义函数成为不可能。如果您确实需要按引用传递数组,则可以将其包装在结构中,然后它将按引用传递。
值得一提的是,在Railo CFML引擎中,数组也被视为按引用传递的,很多开发人员认为这样做更为合理。预计Railo 3.1版本还将提供一个管理设置选项,允许您选择默认行为,以便与Adobe CF进行可选的兼容性。