При передаче объекта в функцию в качестве параметра и использовании его для создания отдельного объекта с помощью Object.create вы получаете пустой объект.Но если вы затем используете этот новый объект для ссылки на определенный параметр, который был установлен в начальном объекте, вы получите значение параметра начального объекта.
Я ожидаю, что эти значения будут включены в новый объект или, по крайней мере,не может быть достигнуто в нем.
var o = { baz: [] };
o.rrr = { a: 1 };
console.log( o, '"o" before timeout called' );
setTimeout(function() { n(o) }, 1000); // setting delay
function n(x) {
console.log( 'x - what we passed', x );
var obj = Object.create( x );
console.log( obj, '"obj" before enhancements is empty' );
console.log( obj.rrr, 'but "obj.rrr" do exist' );
obj.baz = [];
obj.baz.push( 'new value' );
console.log( obj, '"obj" after enhancements contain "baz" only' );
console.log( obj.rrr, 'but "obj.rrr" still exist' );
console.log( o, '"o" after timeout ended' );
console.log( '---- THE END ----' );
}
console.log( o, '"o" after timeout called' );
Как так?
Можете ли вы избавиться от этих ссылок, сохранив структуру?
Можно ли иначе получить эти значения, установленные в вашем новом объекте, с самого начала (например, клонировать его)?