代码之家  ›  专栏  ›  技术社区  ›  Wouter Coekaerts

在Flex中的原型中添加setter

  •  1
  • Wouter Coekaerts  · 技术社区  · 16 年前

    例如,与 A

    var o:Object = new A();
    A.prototype.myFunction = function():void{trace("foo");}
    o.foo();
    

    这就叫 foo 功能。但是如何添加setter,以便设置属性调用setter(就像在类上以“正常”方式声明setter一样)。所以我想要的是这样的:

    // doesn't work!    
    A.prototype["set myProperty"] = mySetter; 
    o.myProperty = "test"; // should call mySetter
    

    2 回复  |  直到 16 年前
        1
  •  2
  •   Samuel Neff    16 年前

    ActionScript1/2通过调用addProperty(name、getter、setter)支持这一点。这可以在单个对象或原型上完成。AS3不支持此功能,即使带有“-es”标志。

    作为参考,这里有一个例子说明了过去的做法:

    var A = function() {};
    
    A.prototype.addProperty("myProp", 
        function() { 
            trace("myProp getter: " + this._myProp); 
            return this._myProp; 
        }, 
        function(value) {
            trace("myProp setter: " + value); 
            this._myProp = value; 
        });
    
    var a = new A();
    a.myProp = "testing";
    var x = a.myProp;
    
        2
  •  0
  •   jeremym    16 年前

    在任何情况下,在原型黑客游戏中都不能使用getter/setter。即使有,我也会想象有一个更好的替代方案,可以更好地使用flashPlayer的架构。我的2p。