对象不支持属性或方法' __ defineGetter __'

时间:2014-10-20 08:53:03

标签: javascript

我正在使用arbor js。但是,当我运行ie8,9和10浏览器时,它会显示错误对象并不支持属性或方法__defineGetter__。我该如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

__defineGetter__是一种古老的,专有的定义属性的方式" getter"功能。如果您使用的库依赖于它,则无法在不支持它的JavaScript引擎上使用它。

为属性定义getter函数的现代标准方法并不使用该语法。也许您可以使用更新版本的库。

目前有两种/三种标准方式,另一种方式是:

object initializer上使用getset函数:

var obj = {
    get foo() {
        return /*...foo value...*/;
    },
    set foo(v) {
      // Set foo value
    }
};

...或使用Object.defineProperty

var obj = {};
Object.defineProperty(obj, "foo", {
    get: function() {
        return /*...foo value...*/;
    },
    set: function(v) {
      // Set foo value
    }
};

...或使用Object.defineProperties(或Object.create的第二个参数,它接受同样的事情):

var obj = {};
Object.defineProperties(obj, {
    foo: {
        get: function() {
            return /*...foo value...*/;
        },
        set: function(v) {
            // Set foo value
        }
    }
});

对于通过构造函数创建的对象,ES6还将添加class

class ThingWithFoo {
    get foo() {
        return /*...foo value...*/;
    }

    set foo(v) {
      // Set foo value
    }
}