<div>With Direct Proxies there's no such thing as a fully virtual object. Virtualized objects can be achieved by just creating a new empty/placeholder object with the desired invariants ([[prototype]], [[class]], etc). This is all well and good except it turns a handful of non-internal properties into invariants as well, mostly the properties auto-installed on functions. [arguments, name, caller, length] are non-configurable non-writable, prototype is non-configurable.</div>
<div><br></div><div>With other objects you can mostly manage the problem by creating a new instance using Object.create since nothing comes preinstalled. This obviously doesn't work for a functions, nor have I seen semantics on how inheritance for functions is support to work once we actually have the ability to do that. Has this been discussed anywhere yet? Have the semantics of how inheritance for functions is supposed to work in regards to the above properties?</div>