Tidak juga.
Bergantung pada apa yang sebenarnya Anda butuhkan, satu kemungkinan mungkin ditetapkan osebagai prototipe objek baru.
var o = {};
(function(x){
var obj = Object.create( x );
obj.foo = 'foo';
obj.bar = 'bar';
})(o);
alert( o.foo ); // undefined
Jadi properti apa pun yang Anda tambahkan objtidak akan ditambahkan o. Setiap properti yang ditambahkan ke objdengan nama properti yang sama dengan properti di oakan membayangi oproperti.
Tentu saja, setiap properti yang ditambahkan ke oakan tersedia objjika tidak dibayangi, dan semua objek yang ada odi rantai prototipe akan melihat pembaruan yang sama untuk o.
Selain itu, jika objmemiliki properti yang mereferensikan objek lain, seperti Array, Anda harus memastikan untuk membayangi objek tersebut sebelum menambahkan anggota ke objek, jika tidak, anggota tersebut akan ditambahkan obj, dan akan dibagikan di antara semua objek yang miliki objdalam rantai prototipe.
var o = {
baz: []
};
(function(x){
var obj = Object.create( x );
obj.baz.push( 'new value' );
})(o);
alert( o.baz[0] ); // 'new_value'
Di sini Anda dapat melihat bahwa karena Anda tidak bayangan Array di bazatas odengan bazproperti pada obj, yang o.bazArray akan diubah.
Jadi, Anda harus membayangi terlebih dahulu:
var o = {
baz: []
};
(function(x){
var obj = Object.create( x );
obj.baz = [];
obj.baz.push( 'new value' );
})(o);
alert( o.baz[0] ); // undefined