domenic at domenicdenicola.com (2013-10-26T03:18:03.820Z)
Actually, this is a good point. As currently specified `Object.assign` of with an own `__proto__` property on the RHS object will trigger a [[SetPrototypeOf]] on the LHS object. Is that what we want. It is a direct fallout of specifying `Object.assign` as the equivalent of a sequence of property assignments from the RHS to the LHS. `"__proto__"` could be special cased. But should it? `Object.mixin` doesn't have this issue because, as Rick points out, it uses GetOwnProperty/DefineProperty instead of Get/Set. Anybody want to argue that `Object.assign` shouldn't trigger [[SetPrototypeOf]]?
On Oct 19, 2013, at 7:55 AM, Rick Waldron wrote: > > > On Sat, Oct 19, 2013 at 10:25 AM, teramako <teramako at gmail.com> wrote: > Hi > > I believe Object.assign never update the target's [[prototype]]. But current rev19 spec is using Put. So I'm afraid of following case will update the [[prototype]]. > > var soruce = {}; > Object.defineProperty(source, "__proto__", { > value: { a: "A", b: "B" }, > enumerable: true > }); > var target = {}; > Object.assign(target, source); > Is this expected result ? and is there a plan to change to DefinePropertyOrThrow from Put ? > > > Object.assign is essentially a "batch property assignment with Put"; I believe what you're describing above is Object.mixin, which is "batch property definition with DefinePropertyOrThrow". > Actually, this is a good point. As currently specified Object.assign of with an own __proto__ property on the RHS object will trigger a [[SetPrototypeOf]] on the LHS object. Is that what we want. It is a direct fallout of specifying Object.assign as the equivalent of a sequence of property assignments from the RHS to the LHS. "__proto__" could be special cased. But should it? Object.mixin doesn't have this issue because, as Rick points out, it uses GetOwnProperty/DefineProperty instead of Get/Set. Anybody want to argue that Object.assign shouldn't trigger [[SetPrototypeOf]]? Allen -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20131019/395a3aba/attachment-0001.html>