Javascript Object.defineProperty在FireFox 19.02(MacOS)中产生TypeError

时间:2013-04-11 15:32:31

标签: javascript defineproperty

就在今天,我尝试将javascript中使用Object.defineProperty()方法的旧库包含在HTML文档中。我很确定在以前版本的FireFox中它运行得很好。但是,如果我现在使用它,在MaxOS 10.6.8的FF 19.02中,如本例所示:

var nuArray = function (values) {
    for (var i in values) {this[i] = values[i]}
}
nuArray.prototype = Array.prototype;

var defaultProperties = {configurable: true, writable: true, enumerable: false, get: undefined, set: undefined, value: undefined};

Object.defineProperty(nuArray, "grep", defaultProperties)

我收到以下错误

TypeError: property descriptors must not specify a value or be writable when a getter or setter has been specified @ ....

我之后才添加valuegetset部分,将它们明确地设置为undefined(默认情况下应该是这样,但因为这种行为很奇怪首先,我想确保我已经覆盖了每个基地。 它在Safari 5.1.7中运行没有问题,正如我之前已经提到的,我非常确定它在之前版本的FF中是这样做的。奇怪的是,即使是现在,如果我只是将代码行复制到FF的控制台中,也不会抛出任何错误,并且一切正常。如果我定义valuegetset,则没有任何区别。 有什么明显的东西让我忽略,或者我遇到了一个新的浏览器不兼容问题吗?

1 个答案:

答案 0 :(得分:5)

在属性描述符中,在使用属性“set”或“get”时省略'writable'属性。