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

yog*_*mbi 2 javascript defineproperty

就在今天,我试图将使用Object.defineProperty()javascript中的方法的较旧的我的库包含到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)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

TypeError: property descriptors must not specify a value or be writable when a getter or setter has been specified @ ....
Run Code Online (Sandbox Code Playgroud)

我仅在稍后添加valuegetset部分,以将它们显式设置为undefined(默认情况下应将其设置为,但是由于这种行为开始时很奇怪,因此我想确保覆盖所有基础)。它在Safari 5.1.7中运行没有问题,并且正如我之前已经提到的那样,我非常确定它在FF的早期版本中是这样做的。足够奇怪的是,即使是现在,如果我只是将代码行复制到FF的控制台中,也不会引发任何错误,并且一切都会正常进行。它没有任何区别,如果我定义valuegetset。我是否有明显的遗漏或正在碰到新一版的浏览器不兼容问题?

小智 5

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