属性本身也是一个对象。但是,无论注册到什么对象中,普通的操作方式只是会调用属性控制器,而无法对属性对象本身进行操作。
使用
&
运算符可以取出属性对象。取出的属性对象能够代入到局部变量中。
还有,使用
&
运算符也可以把属性对象注册到别的对象中。
例:
property prop
{
(略)
}
{
var p = ∝
&object.property1 = p;
}
使用
&
运算符可以不触动读取函数和设置函数,直接对属性对象本身进行操作。不使用
&
运算符的话,则是对属性的普通的操作(读或写)。
已经被取出并变为局部变量的的属性对象,虽然没有注册到某个对象中,但是使用
*
运算符仍可以调用它的属性控制器。
例:
property prop
{
(略)
}
{
var p = ∝
*p = 30;
func(*p);
}
Note
像上面那样使用 var 变量保存属性对象时,请使用局部变量。这是因为,属性对象一旦注册到某个对象中,它就不会作为属性对象,而是作为属性经由读取函数和设置函数来工作。换句话说,不作为局部变量,而是作为全局变量(=global的成员)或者对象的成员来注册的话,它就会像普通的属性那样工作。当然,可以使用 & 运算符把注册为全局变量或对象的成员的属性对象取出来。
对属性对象使用 instanceof 运算符和 "Property" 操作数,结果为真(以上面那个为例,&prop instanceof "Property" 的值为真)。