AS3 - 更改布尔(对象)行为

Luc*_*hez 5 casting boolean object actionscript-3

当你将任何对象转换为布尔值时,true如果对象不是null,false则得到,否则,我喜欢为某些对象更改此行为.我希望有些物体false即使不存在也会返回null

我知道在ActionScript 3.0中我们可以使用改变对象的一些默认行为Proxy.我们可以做同样的Boolean(object)object as Boolean?以及如何做到这一点?

我想在下一个想法之后问这个:

我有这个代码:

if (someObject)
    someObject.DoSomething();
Run Code Online (Sandbox Code Playgroud)

这意味着DoSomething只有在someObject没有被调用的情况下null,这只是因为背后的"真实"代码是这样的:

if (Boolean(someObject) == true)
    someObject.DoSomething();
Run Code Online (Sandbox Code Playgroud)

并且有效,因为任何对象都自动转换为布尔值,结果是true,但如果引用指向null结果是false.

我想知道我是否可以改变这种行为而不添加像这样的新功能isTrue(someObject).

在此先感谢,对不起我的英语不好.

alx*_*lxx 3

不,CustomClass(object) 和as是强制转换运算符,两者的行为都是由语言定义的。而且 Boolean(object) 是,afaik,具有语言定义行为的全局函数(并且没有函数重载。)在 ActionScript 3.0 中没有用于类型转换的类级运算符,您必须为 true/false 实现一些属性检查。

  • 如果您需要对自己创建的多个对象类型执行此类检查,您可以创建一个接口,强制它们实现 asBoolean():Boolean 并将引用强制转换为您执行检查的接口类型。 (2认同)