The code was only meant to be a better explanation of the goal, but yes it would have to take into account getters, setters, etc...
Actually it was a copy/paste edit of some code we use for cloning (deserialized) JSON objects for API reproduction. There is an omit stage that was removed and since it was originally designed around JSON structures there is no built in support for custom properties, getters, setters. DOM nodes I'm not sure how you would account for. In all actuality I would think they would throw an error, but maybe they shouldn't. Magically appearing textboxes could be a bad thing :D On Thu, Sep 24, 2015 at 1: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

