就在今天,我尝试将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 @ ....
我之后才添加value
,get
和set
部分,将它们明确地设置为undefined
(默认情况下应该是这样,但因为这种行为很奇怪首先,我想确保我已经覆盖了每个基地。
它在Safari 5.1.7中运行没有问题,正如我之前已经提到的,我非常确定它在之前版本的FF中是这样做的。奇怪的是,即使是现在,如果我只是将代码行复制到FF的控制台中,也不会抛出任何错误,并且一切正常。如果我定义value
,get
或set
,则没有任何区别。
有什么明显的东西让我忽略,或者我遇到了一个新的浏览器不兼容问题吗?
答案 0 :(得分:5)
在属性描述符中,在使用属性“set”或“get”时省略'writable'属性。