Claude, you know that's actually *my* proposal, right? :P https://gist.github.com/WebReflection/9353781
But yeah, that's the spirit! On Thu, Sep 24, 2015 at 8:21 PM, Claude Pache <[email protected]> wrote: > > Le 24 sept. 2015 à 19:58, Andrea Giammarchi <[email protected]> > a écrit : > > Last, but not least, one does not simply assign properties in JavaScript. > If you want to clone you don't want to miss possible get/set accessors in > the process, you don't want to miss getOwnPropertyNames and > getOwnpropertySymbols neither, so the last loop doesn't work as proposal. > > ```js > // simplified version for regular objects only > // basically just the correct substitute of your last temp logic > Object.clone = function (src) { > return Object.setPrototypeOf( > Reflect.ownKeys(src).reduce((o, k) => { > var d = Object.getOwnPropertyDescriptor(src, k); > if ( > o.hasOwnProperty.call(d, 'value') && > /function|object/.test(typeof d.value) > ) d.value = Object.clone(d.value); > return Object.defineProperty(o, k, d); > }, {}), > Object.getPrototypeOf(src) > ); > }; > ``` > > > ```js > Object.clone = function (src) { > return Object.create(Object.getPrototypeOf(src), > Object.getOwnPropertyDescriptors(src)) > } > ``` > > where the definition of `Object.getOwnPropertyDescriptors()` is left as > an exercise to the reader. > > > —Claude > >
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

