有没有人知道AS3 / Flash运行时在沙箱之间工作时如何处理尝试修改原型的问题。特别是我在沙箱A中创建了对象O,然后将其传递给SandBox B.如果沙箱B中的代码试图修改原型,会有什么影响? (在同一个类的A中的对象看到这个吗?)。 Sandbox B可以覆盖在沙箱A中创建的对象的公共字段和方法(如果对象作为参数传入)?是否有可能创建一个不可修改的类(即相当于java中的final),它可以作为在加载的swf和主swf之间传递的现成代理?我知道事件类可以使用clone()进行排序,然后在2个swf之间传递事件。是否在AS3中使用最终类是创建只能无法修改的只读代理的正确方法?
答案 0 :(得分:3)
你总是可以使用flash.utils.Proxy类,如果你想要某个对象的只读代理......
ActionScript3不是基于原型的1和2(你需要编译到ecma对象模式,这会以极快的速度降低)......
它现在有2个继承机制...一个是基于类的,另一个是基于原型的,仅适用于动态类的动态属性... 密封(即不是动态)类,没有密封属性或密封 动态方法strong> class可以在运行时修改...通过修改属性,我的意思是修改它的类型,或者在运行时添加一个setter,或者覆盖它......如果属性是可写的,你当然可以为它分配一些东西。 ..
最终仅表示,它不能被子类化......
据我所知,只要你将对象O从沙盒A传递给B,B中的代码就可以像访问A中的代码一样访问O ...
我不知道,如果这回答了你的问题...也许你可以解释一下,到底是什么......:)
格尔茨
back2dos