Yes. For these same reasons, Date.call(obj) already doesn't work in ES5.
On Tue, Feb 18, 2014 at 10:54 AM, Allen Wirfs-Brock <[email protected]>wrote: > > On Feb 18, 2014, at 10:39 AM, Domenic Denicola wrote: > > > You can do so in the manner you were always able to in ES5, and you were > able to do in ES6 before the introduction of @@create. However, what this > means is that you now allow parastic inheritance again, which @@create was > created to disallow. > > > > That is, you could have a MapPromiseWeakMap just by doing > > > > ```js > > var obj = {}; > > Map.call(obj); > > Promise.call(obj, function () {}); > > WeakMap.call(obj); > > ``` > > > > So such a "solution" isn't really maintaining the ES6 semantics, since > it allows strictly more things than ES6 does. > > No, even if you removed the checks in Map and Promise and WeakMap that > prevent them from trying to initialize an object that lacks the appropriate > internal slots it still wouldn't work because obj does not have the > internal slots necessary to support the built-in operations upon those > objects and implementations commonly implement such objects in a manner > that prevents the dynamic addition of such slots. > > The whole purpose of @@create is to allow implementations to allocate > prior to invoking a constructor the correctly shaped object for built-ins. > > Allen > > > > > > > > _______________________________________________ > > es-discuss mailing list > > [email protected] > > https://mail.mozilla.org/listinfo/es-discuss > > > > -- Cheers, --MarkM
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

