Не зовсім.
Залежно від того, що вам насправді потрібно, може бути одна можливість встановити oв якості прототипу нового об’єкта.
var o = {};
(function(x){
var obj = Object.create( x );
obj.foo = 'foo';
obj.bar = 'bar';
})(o);
alert( o.foo ); // undefined
Тому будь-які властивості, до яких ви додаєте obj, не додаватимуться o. Будь-які властивості, додані до objтого ж імені властивості, як і властивість у o, затьмарять його o.
Звичайно, будь-які властивості, до яких oбуде додано, будуть доступні, objякщо вони не затінені, і всі об’єкти, що містяться oв ланцюжку прототипів, побачать ті самі оновлення o.
Крім того, якщо у objвас є властивість, на яку посилається інший об'єкт, наприклад на масив, вам потрібно буде впевнено затінити цей об'єкт перед тим, як додати до нього об’єкти, інакше ці учасники будуть додані до них objі будуть поділятися між усіма об'єктами, які є objв ланцюжку прототипів.
var o = {
baz: []
};
(function(x){
var obj = Object.create( x );
obj.baz.push( 'new value' );
})(o);
alert( o.baz[0] ); // 'new_value'
Тут ви можете побачити , що , тому що ви не затінювати масив в bazна oз bazвласністю на obj, то o.bazмасив модифікується.
Тому натомість вам спочатку потрібно буде затінити його:
var o = {
baz: []
};
(function(x){
var obj = Object.create( x );
obj.baz = [];
obj.baz.push( 'new value' );
})(o);
alert( o.baz[0] ); // undefined