Pas vraiment.
En fonction de ce que vous avez réellement besoin, une possibilité peut-être de fixer o
comme le prototype d'un nouvel objet.
var o = {};
(function(x){
var obj = Object.create( x );
obj.foo = 'foo';
obj.bar = 'bar';
})(o);
alert( o.foo ); // undefined
Donc toutes les propriétés que vous ajoutez à l' obj
sera pas ajoutée o
. Toutes les propriétés ajoutées obj
avec le même nom de la propriété à la propriété en o
fera de l'ombre à l' o
de la propriété.
Bien sûr, toutes les propriétés ajoutées o
sera disponible à partir de obj
s'ils ne sont pas occultées, et tous les objets qui ont o
dans la chaîne de prototype permettra de voir les mêmes mises à jour de o
.
Aussi, si obj
a une propriété qui fait référence à un autre objet, comme un Tableau, vous aurez besoin pour être sûr d'ombre de l'objet avant de l'ajout de membres à l'objet, par ailleurs, les membres seront ajoutés obj
, et sera partagé entre tous les objets qui ont obj
dans la chaîne de prototype.
var o = {
baz: []
};
(function(x){
var obj = Object.create( x );
obj.baz.push( 'new value' );
})(o);
alert( o.baz[0] ); // 'new_value'
Vous pouvez voir ici que parce que vous n'avez pas d'ombre au Tableau lors de la baz
sur o
avec un baz
bien sur obj
, l' o.baz
Tableau se modifie.
Donc, au lieu de cela, vous auriez besoin de l'ombre en premier:
var o = {
baz: []
};
(function(x){
var obj = Object.create( x );
obj.baz = [];
obj.baz.push( 'new value' );
})(o);
alert( o.baz[0] ); // undefined