代码之家  ›  专栏  ›  技术社区  ›  Dmitry Mukhin

Python在Javascript中的_ugetattr__;[重复]

  •  24
  • Dmitry Mukhin  · 技术社区  · 17 年前

    有没有一种方法可以模拟Python的 __getattr__

    我想截取Javascript对象属性的“get”和“set”。

    在Python中,我可以编写以下内容:

    class A:
        def __getattr__(self, key):
            return key
    
    a = A()
    print( a.b )  # Output: b
    

    Javascript呢?

    2 回复  |  直到 11 年前
        1
  •  9
  •   Crescent Fresh    17 年前

    不,最近的是 __defineGetter__ 在Firefox中可用,它定义了在读取指定属性时调用的函数回调:

    navigator.__defineGetter__('userAgent', function(){
        return 'foo' // customized user agent
    });
    
    navigator.userAgent; // 'foo'
    

    它不同于 __getattr__

        2
  •  3
  •   Community Mohan Dere    9 年前

    不在标准ECMAScript-262第三版中。

    另一方面,即将发布的第五版(目前为草稿)在对象初始值设定项中引入了访问器。例如:

    var o = {
      a:7,
      get b() { return this.a + 1; },
      set c(x) { this.a = x / 2; }
    };
    

    类似的语法已经存在 supported by Javascript 1.8.1 (当然是非标准的扩展)。

    请注意,目前还没有“完成”的ES5实现(尽管 some are in progress )