What if you just did
var x = { ...};
var y = Object.create(x);
Object.freeze(y);
Object.preventExtension(y);
Wouldn't that achieve the same effect?