我读了一个关于stackoverflow的问题(现在找不到)关于如何只能在该方法中访问方法中的变量,但代码仍然适用于酒店房间的类比。在AS3中,我相信所有非原始的东西都会作为参考传递。那么,以下代码与该问题相同,并不能保证有效?
public class Testy {
private var foo:Array;
public function Testy(input:Array) {
// Allow the whole class to access it
foo = input;
}
public function traceFoo(){
trace(foo);
}
}
现在,foo将引用类'构造函数中的输入参数。这是安全的代码/良好做法吗?谢谢!
答案 0 :(得分:1)
是的,这是安全/良好的代码练习,只要您不想操作原始数组。如果要操作原始数组,请允许公共访问数组,方法是将其设置为public var或使用公共getter / setter。
答案 1 :(得分:1)
您所描述的是一个属性,并且内嵌了面向对象编程的封装。
这会暴露一个getter和setter:
package { import flash.display.Sprite; public class Testy extends Sprite { private var _foo:Array; public function get foo():Array { return _foo; } public function set foo(value:Array):void { _foo = value; } public function Testy() { super(); } } }
答案 2 :(得分:0)
最好在getter中返回_foo.concat(),不要破坏封装。