Having Object.setPrototypeOf to match Object.getPrototypeOf is nice, better for proxies (with necessary changes to them), and polyfillable.

Take my last note as an attitude adjustment, though. So long as __proto__ endures, its brevity and legacy uses will tend to propagate its use into the future.

In that light, pushing everything but the object literal __proto__ special form into Annex B still rubs me the wrong way. I'd do both O.p.__proto__ and the special form in the main spec, or both in Annex B (to make Andreas happy ;-). Not split them up.

/be

Allen Wirfs-Brock wrote:
On May 8, 2013, at 8:46 AM, Andreas Rossberg wrote:

On 8 May 2013 17:41, Allen Wirfs-Brock<[email protected]>  wrote:
On May 8, 2013, at 8:31 AM, Mark Miller wrote:

What about your triangle argument?
There is another way:

let obj = Object.setPrototypeOf({x:0, y:0}, pointProto};

Let's keep {__proto__: foo} in the slightly disrespectable Annex B box. That keeps it together with O.p.__proto and leaves room for future, more elegant object literal syntax extensions if we decided we really need them (and we probably won't).
Isn't Object.create the proper alternative to both {__proto__: } and
triangle for objects? What has setPrototypeOf got to do with it? (And
why is that on the table all of a sudden?)

I think that Brandon Benvie adequated addressed Object.create.

Regarding setPrototypeOf, once Mark agreed that the [[protoSetter]] function did not need to be Realm restricted it essentially became a publicly available API for modify the [[Prototype]] of arbitrary objects.

Object.getOwnPropertyDescriptor(Object.prototype, "__proto__").set.call(obj, proto)

There is a vocal part of the JS community who would prefer that the core language also offer Object.setPrototypeOf as the preferred alternative to the above:

        Object.setPrototypeOf(obj,proto)

This is only a cosmetic difference. But I agree that it is good cosmetics. Dynamic prototype modification seems to have won as a required feature of the language. Since that is the case, consistancy suggests that we should treat it cosmetically just like all the dynamic reflection operations defined on Object.

Allen









_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to