2013-04-11 4 views
1

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?

+0

problème persiste toujours dans FF 20.0. – yogibimbi

Répondre

3

A l'intérieur d'un descripteur de propriété, ne tenez pas compte de la propriété 'writable' lors de l'utilisation des propriétés 'set' ou 'get'.

Questions connexes