Voici une version trop simpliste de ce que j'essaie de faire.jquery profond remplacer
var usersChoice;
var object1 = {name: 'fu', id:'123', infoArray: [1,2,3,4,5]};
var object2 = {name: 'bar', id:'456', infoArray: [9,8]};
jQuery.extend(true, usersChoice, object1);
Ensuite, si je veux changer mon esprit
jQuery.extend(true, usersChoice, object2);
Le résultat:
usersChoice = {name: 'bar', id:'456', infoArray: [9,8,***3,4,5***]};
Ce que je veux est l'ancien objet à être totalement remplacé par le nouveau. Même juste une fonction d'effacement profonde que je pourrais appeler juste avant d'étendre comme ...
userChoice.nukeItFromOrbit();
Pour mémoire, j'ai essayé juste userChoice = nouvel objet ou non la copie, mais simplement en montrant les objets originaux. Les deux solutions ont une fâcheuse tendance à sortir du champ de vision à un moment donné de la ligne. (certains de ces objets sont transmis en tant que 'ceci' je soupçonne que c'est le coupable)
Alors, comment puis-je faire cela sans réinventer la roue de copie profonde? J'ai regardé partout et tout ce que j'ai trouvé est de réinventer la roue ou d'être dit que ce n'est pas une raison pour laquelle je devrais faire ce que je fais. =/
Vous voulez fusionner everthing sauf tableaux? ou si object2 manquait le nom si le résultat final manquait le nom? (aussi, donnez-moi un cas d'utilisation pour cela, car je suis dans le camp de ne jamais avoir besoin de faire cela) –
la question n'est pas claire, vous voulez deepExtend ou vous ne voulez pas étendre en profondeur? – Abid
@Abid Je veux deepReplace, l'ancien objet à nuked de toutes les données et le nouveau mis en. –