Je viens de trébucher sur un petit problème lors de l'extension des objets javascript en utilisant jQuery. Lors de l'exécution
var item = $.extend(options.itemDefaults, item);
options.itemDefaults
est étendue avec les propriétés qui sont déjà en item
et le résultat est Transmis à item
. Jusqu'ici tout va bien.
Mais le temps suivant cette ligne est exécutée, options.itemDefaults
a toutes les valeurs de propriété item
Had, au lieu des valeurs par défaut d'origine. Mes défauts sont perdus!
Je me rends compte que je pouvais simplement stocker l'objet par défaut dans une variable temporaire, et étendre la variable temporaire à la place, mais il semble un peu long. Existe-t-il un moyen de faire ce que je veux (en remplaçant les valeurs par défaut par celles fournies, en prenant les valeurs par défaut lorsqu'aucune valeur n'est fournie, mais en ne modifiant pas l'objet par défaut) sans ce détour?
Mise à jour: Il semble que ce n'était pas aussi facile de se déplacer que je l'espérais. Quand je fais
var defaults = options.itemDefaults;
var $item = $.extend(defaults, { attributeModel: options.attributeModel }, item);
defaults = undefined
à chaque itération, je encore ajouter des propriétés de item
sur options.itemDefaults
! Comment puis-je contourner cela?
Brillant! C'était exactement ce que je recherchais. Merci! =) –
De rien, content que ça a aidé :) – Anurag