繁体   English   中英

Actionscript-3命名空间和动态类型?

[英]Actionscript-3 namespaces and dynamic types?

好吧,这是一个奇怪的...

是否可以将命名空间成员添加到匿名或动态类型? 举例来说,如果您想将内置类型“标记”为“ touched”?

早些时候,我曾考虑过将隐藏成员添加到StyleSheets及其内部样式中,并想知道如何防止覆盖或序列化它们。 我放弃了,因为还有很多其他方法可以完成我想做的事情,最后期限迫在眉睫-但我仍然想知道它是否完全可行?

我一直在尝试,但是没有运气...

namespace mynamespace = "http://foo.bar/";
Object.prototype.test = "default";
Object.prototype.mynamespace::test = "mynamespace";

var o:Object = new Object();
trace(o.test);
trace(o.mynamespace::test);

在最新的Flex 4 SDK上,对我没有任何帮助...

我建议你这样做:

package  {
    import flash.utils.Dictionary;
    public class Annotations {
        private static var annotations:Dictionary = new Dictionary(true);
        public static function of(target:Object):Object {
            var ret:Object = annotations[target];
            if (ret == null) annotations[target] = ret = Object;
            return ret;
        }
    }
}

用法

var o:Object = new Object();
Annotations.of(o).foo = 1234;
trace(Annotations.of(o).foo);//1234

请注意,这相对昂贵,但实际上表现不错。 无论是弱键字典还是静态调用,在性能至关重要的情况下都应避免。

格里茨
back2dos

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM