Pregunta

Just today I tried to include an older library of mine that uses the Object.defineProperty() method in javascript into an HTML document. I am quite certain that in previous versions of FireFox it worked just fine. However, if I use it now, in FF 19.02 on MaxOS 10.6.8, as in this example:

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)

I get the following error

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

I added the value, get and set parts only later to set them explicitly to undefined (they should be by default, but since this behaviour was rather strange to start with, I wanted to make sure I had every base covered). It runs without a problem in Safari 5.1.7 and, as I already mentioned before, I am very sure it did so in a previous version of FF. Strangely enough, even now, if I just copy the lines of code into the console of FF, no error is thrown either and everything works as it should. It doesn't make any difference if I define value, get or set. Is there anything blatantly obvious that I am overlooking or am I running into a new issue of browser-incompatibility here?

¿Fue útil?

Solución

Inside a property descriptor, leave out the 'writable' property when using properties 'set' or 'get'.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top