It appears that this is the case with any public static getter.
public static function get FOO():String{return “foo”}
or
public static function get FOO():Foo{return _foo}
I don’t see any reason why bracket notation would be needed. Is this a
throwback from before we had the get__ functions?
Thanks,
Harbs
> On Jul 9, 2017, at 11:27 PM, Harbs <[email protected]> wrote:
>
> I just discovered something:
>
> Foo.as:
> package com.acme.foobaz.model{
> [Bindable]public class Foo{
> static public const BAZ:String = “baz”;
> }
> }
>
> In some other class:
>
> if(baz == Foo.BAZ){//do something}
>
> compiles to:
> if(baz == com.acme.foobaz.model.Foo[“BAZ”])
>
> If you remove the [Bindable] meta tag on the Foo class, it compiles to:
> if(baz == com.acme.foobaz.model.Foo.BAZ)
>
> In the debug build, these two are functionally identical. However, when
> Google minifies the file, it has no way of knowing that Foo.BAZ is used. This
> results in calling (assuming com.acme.foobaz.model.Foo becomes k) k.BAZ even
> though k.BAZ was optimized away and k.BAZ is undefined.
>
> Why does [Bindable] on a class cause the bracket notation to be used?
>
> Harbs