So having just posted about how excited I am with Whatever.Object, I should point out what it's not good for - short lived objects. Specifically, I realized this doing Seaside-Mootools where I was representing a client side Javascript object as a Whatever.Object.
It was good to be able to have a shapeless object to represent another shapeless object, however, Whatever is designed to make the second access to an instance variable fast. That means if you want to make, say, 20 async callbacks, you're running the cost of creating the shape of an async callback javascript object dynamically 20 times instead of just once.
So I replaced Whatever.Object in Seaside-Mootools with a straight Dictionary and the VM load dropped significantly, giving me a nice speed boost. It's interesting to find out what a technique is good for/not good for.