3

就在今天,我尝试将我的一个使用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)

我收到以下错误

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

我后来才添加了value,get和部分,以便将它们显式设置为(默认情况下它们应该是,但由于这种行为一开始就相当奇怪,我想确保我已经涵盖了所有基础)。它在 Safari 5.1.7 中运行没有问题,正如我之前已经提到的,我非常确定它在以前的 FF 版本中也是如此。奇怪的是,即使是现在,如果我只是将代码行复制到 FF 的控制台中,也不会抛出任何错误,并且一切正常。如果我定义,或.没有任何区别。有什么明显我忽略的东西,还是我在这里遇到了浏览器不兼容的新问题?setundefinedvaluegetset

4

1 回答 1

7

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

于 2015-12-27T08:25:00.660 回答