ok. so i started digging in the core's code to understand better how to do this best. I noted the $unlink, when passed a hash, simply does return new Hash(object) this seemed odd, because i couldn't understand how it solves the recrusive issue, so i figured i'll find the answer at the Hash constructor, so i went to the Hash code base. which apparently, has no constructor (at least not here<http://github.com/mootools/mootools-core/blob/master/Source/Native/Hash.js>). so i decided to find getClean to see if it solves the recursive issue. but again - no getClean method there<http://github.com/mootools/mootools-core/blob/master/Source/Native/Hash.js>.
so i was thinking this probably means Hash gets its methods and constructor from other natives, but couldn't find which. so a few questions - 1. where exactly does Hash gets its constructor from and what kind of checks does it do (if any) to make sure it really does create a truly new object (and if none is the answer, the $unlink code is broken). 2. where does getClean comes from? is it recursive? 3. will $unlink really do the trick for me (assuming it will actually work)? or do i need to do $unlink(hash.getClean()) for it to function properly? cloning an object or an array seems like a trivial operation to me. It seems odd that this is both so complex and also that moo doesn't have a fully supported way of doing this (or at least a coding standard for it). * (btw - this isn't criticism - if that's what it sounds like - i really dig moo and you developers really take programing with JS to a completely new level. I'm just curious about it). * ----------- אריה גלזר 052-5348-561 5561 On Wed, Jan 13, 2010 at 18:25, Aaron Newton <[email protected]> wrote: > $unlink isn't documented; the risk being that it may not be supported in > the future. > > 2010/1/13 Fábio M. Costa <[email protected]> > > var newHash = $unlink(oldHash); >> >> >> -- >> Fábio Miranda Costa >> Solucione Sistemas >> Engenheiro de interfaces >> >> >> >> On Tue, Jan 12, 2010 at 11:25 PM, Eneko Alonso <[email protected]>wrote: >> >>> It's simple... just create a new Hash. >>> >>> var clon = new Hash(clonedHash.getClean()); >>> >>> >>> That should work >>> >>> >>> >>> On Sat, Jan 9, 2010 at 11:54 AM, אריה גלזר <[email protected]>wrote: >>> >>>> reading more i saw that this supplies me with a non-hash copy, but i do >>>> need a hash... >>>> >>>> ----------- >>>> אריה גלזר >>>> 052-5348-561 >>>> 5561 >>>> >>>> >>>> On Sat, Jan 9, 2010 at 21:51, אריה גלזר <[email protected]> wrote: >>>> >>>>> im looking to clone the hash, not create an empty one... >>>>> >>>>> ----------- >>>>> אריה גלזר >>>>> 052-5348-561 >>>>> 5561 >>>>> >>>>> >>>>> On Sat, Jan 9, 2010 at 21:27, Piotr Zalewa <[email protected]> wrote: >>>>> >>>>>> a = this.hash.getClean() >>>>>> will give you a standard object from a Hash >>>>>> >>>>>> 2010/1/9 אריה גלזר <[email protected]> >>>>>> >>>>>> hey. this is a very simple question that i'm dealing with - >>>>>>> i have a class with a hash member. i want to send a copy of that hash >>>>>>> to another function without modifying the original. >>>>>>> doing: >>>>>>> >>>>>>> var a = this.hash >>>>>>> >>>>>>> will only create a reference. is there a simple way of copying >>>>>>> objects or should i just iterate over it to create a new one? >>>>>>> ----------- >>>>>>> אריה גלזר >>>>>>> 052-5348-561 >>>>>>> 5561 >>>>>>> Nothing selected >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> London, UK >>>>>> >>>>> >>>>> Nothing selected >>>>> >>>> >>>> Nothing selected >>>> >>> >>> >> >
