隐式获取/设置方法

面向对象的编程惯例不提倡直接访问类内的属性。类通常会定义“获取”方法和“设置”方法来分别提供对给定属性的读访问和写访问。例如,假设某个类包含一个名为 userName 的属性:

var userName:String;

该类不允许其实例直接访问这个属性(例如 obj.userName = "Jody"),而改为提供两个方法 getUserNamesetUserName。这两个方法的实现代码如下所示:

function getUserName:String() {
  return userName;
}

function setUserName(name:String): {
  userName = name;
}

您可以看到,getUserName 返回 userName 的当前值,而 setUserNameuserName 的值设置为传递给该方法的字符串参数。这样,该类的实例将使用以下语法来获取或设置 userName 属性。

// 调用“获取”方法
var name = obj.getUserName();
// 调用“设置”方法
obj.setUserName("Jody");

但是,如果您想使用更简明的语法,可以使用隐式 获取/设置方法。利用隐式获取/设置方法能够以直接访问的方式访问类属性,同时还可以保持良好的面向对象编程惯例。

若要定义这些方法,应使用 getset 方法属性。首先应创建用于获取或设置属性值的方法,然后在方法名前面加上 getset 关键字。

function get user():String {
  return userName;
}

function set user(name:String):Void {
  userName = name;
}

获取方法不能有任何参数。而设置方法必须有一个必要参数。设置方法与同一范围内的获取方法可以具有相同的名称。但获取/设置方法的名称不能与其它属性的名称相同。例如,在上面的示例代码中,因为定义了名为 user 的获取/设置方法,所以在同一个类中就不能再有名称也为 user 的属性了。

与普通方法不同,调用获取/设置方法时,方法名后面不带任何括号或参量。例如,现在可以按照以下语法使用上面定义的获取/设置方法来访问或修改 userName 的值。

var name = obj.user;
obj.user = "Jack";

注意:隐式获取/设置方法是对动作脚本 1 中 Object.addProperty() 方法的句法简化。