Aujourd'hui encore, j'ai essayé d'inclure une ancienne bibliothèque qui utilise la méthode Object.defineProperty()
en javascript dans un document HTML. Je suis tout à fait certain que dans les versions précédentes de FireFox, ça marchait très bien. Cependant, si je l'utilise maintenant, en FF 19,02 sur maxos 10.6.8, comme dans cet exemple:Javascript Object.defineProperty produit une erreur TypeError dans FireFox 19.02 (MacOS)
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)
je reçois l'erreur suivante
TypeError: property descriptors must not specify a value or be writable when a getter or setter has been specified @ ....
J'ai ajouté les pièces value
, get
et set
seulement plus tard pour les mettre explicitement à undefined
(ils devraient être par défaut, mais puisque ce comportement était plutôt étrange pour commencer, je voulais m'assurer que j'avais toutes les bases couvertes). Il fonctionne sans problème dans Safari 5.1.7 et, comme je l'ai déjà mentionné précédemment, je suis très sûr qu'il l'a fait dans une version précédente de FF. Curieusement, même maintenant, si je copie juste les lignes de code dans la console de FF, aucune erreur n'est levée non plus et tout fonctionne comme il se doit. Cela ne fait aucune différence si je définis value
, get
ou set
. Y at-il quelque chose de tout à fait évident que je néglige ou suis-je en train de rencontrer un nouveau problème d'incompatibilité de navigateur ici?
problème persiste toujours dans FF 20.0. – yogibimbi