就在今天,我尝试将我的一个较旧的库包含到 HTML 文档中,该库在 javascript 中使用 Object.defineProperty() 方法。我很确定在以前版本的 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 ,这没有任何区别。
有什么明显明显的问题是我忽略的,还是我在这里遇到了浏览器不兼容的新问题?

最佳答案

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

关于Javascript Object.defineProperty 在 FireFox 19.02 (MacOS) 中产生 TypeError,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15952926/

10-12 05:23