就在今天,我尝试将我的一个较旧的库包含到 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 @ ....
我后来才添加了
value
、 get
和 set
部分,以便将它们显式设置为 undefined
(默认情况下它们应该是,但由于这种行为一开始很奇怪,我想确保我已经涵盖了所有基础)。它在 Safari 5.1.7 中运行没有问题,正如我之前提到的,我非常确定它在以前版本的 FF 中也是如此。奇怪的是,即使是现在,如果我只是将代码行复制到 FF 的控制台中,也不会抛出任何错误并且一切正常。如果我定义
value
、 get
或 set
,这没有任何区别。有什么明显明显的问题是我忽略的,还是我在这里遇到了浏览器不兼容的新问题?
最佳答案
在属性描述符中,在使用属性“set”或“get”时省略“writable”属性。
关于Javascript Object.defineProperty 在 FireFox 19.02 (MacOS) 中产生 TypeError,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15952926/