Ignorez une propriété en utilisant jquery $ .extend ()?

Existe-t-il un moyen efficace de cloner un objet mais de laisser apparaître des propriétés spécifiées? Idéalement, sans réécrire la fonction $ .extend?

var object = { "foo": "bar" , "bim": Array [1000] }; // extend the object except for the bim property var clone = $.extend({}, object, "bim"); // = { "foo":"bar" } 

Mon objectif est d'économiser des ressources en ne copiant pas quelque chose que je n'utiliserais pas.

jQuery.extend prend un nombre infini d'arguments, il n'est donc pas possible de le réécrire pour s'adapter au format demandé, sans rupture de fonctionnalité.

Vous pouvez cependant supprimer facilement la propriété après l'extension, en utilisant l'opérateur de delete :

 var object = { "foo": "bar" , "bim": "baz" }; // extend the object except for the bim property var clone = $.extend({}, object); delete clone.bim; // = { "foo":"bar" } 

Vous pouvez archiver ce que vous voulez en choisissant ou en omettant le trait de soulignement , ils permettent tous deux de faire une copie d'un objet et de filtrer certaines clés de l'objet source à inclure ou à omettre dans la copie / clone:

 var object = { "foo": "bar" , "bim": Array [1000] }; // copy the object and omit the desired properties out // _.omit(sorceObject, *keys) where *keys = key names separated by coma or an array of keys var clone = _.omit(object, 'bim'); // { "foo":"bar" }