Не совсем понял что значит не сохраняет?
<script>
s = "";
s+= "A = {} -------------------------> "+ eval("A = {}") +"<br>";
s+= "A.__proto__.test = AAA ------> "+ eval('A.__proto__.test = "AAA"') +"<br>";
s+= "B = {} -------------------------> "+ eval("B = {}")+"<br>";
s+= "B.test --------------------------> "+eval("B.test")+"<br>";
s+= "B.test = 321 -------------------> "+eval("B.test = 321") +"<br>";
s+= "B.__proto__.test --------------> "+ eval("B.__proto__.test") +"<br>";
s+= "B.__proto__.test = BBB ------> "+ eval("B.__proto__.test = 'BBB'") +"<br>";
s+= "A.__proto__.test --------------> "+ eval("A.__proto__.test") +"<br>";
s+= "A.test ---------------------------> "+ eval("A.test") +"<br>";
s+= "B.test ---------------------------> "+ eval("B.test") +"<br>";
document.write(s)
</script>
Совсем непонятно зачем это нужно. Если хочешь отловить обращение к несуществующим свойствам смотри в с торону
https://learn.javascript.ru/proxy