On Tue, Dec 11, 2012 at 12:28 PM, Allen Wirfs-Brock <al...@wirfs-brock.com>wrote:
> I'm the past we discussed issues surrounding the semantic differences > between "put" and "define" and we've agreed to include Object.assign in > ES6. We have also discussed Object.define but have not yet made a decision > to include it. > > Nicholas Zaka recently posted a short article that addresses issues > relating to the assign/define distinction > http://www.nczonline.net/blog/2012/12/11/are-your-mixins-ecmascript-5-compatible/ > as they already surface in ES5. > > For me, this article reenforces that we really need to have something like > Object.define in ES6. > > It also made me think that perhaps Object.mixin might be a more intuitive > name for such a function. > This name is certainly more real-word-friendly. The example code that follows "A pure ECMAScript 5 version of mixin() would be:" is basically what I imagined Object.define would be, but with a slight modification in that Object.assign returns the target object, so should Object.mixin: Object.mixin = function(receiver, supplier) { return Object.keys(supplier).reduce(function(receiver, property) { return Object.defineProperty( receiver, property, Object.getOwnPropertyDescriptor(supplier, property) ); }, receiver); }; var a = {}, name = "Rick"; var b = Object.mixin(a, { get name() { return name; } }); console.log( a.name ); // "Rick" console.log( b.name ); // "Rick" console.log( a === b ); // true Rick
_______________________________________________ es-discuss mailing list es-discuss@mozilla.org https://mail.mozilla.org/listinfo/es-discuss