text: .
  "I’m not saying that bending prototypes to act like classes is bad..."
  I'm struggling to think of an example of when it would be a good choice. Seems like another needless leaky abstraction. Why fight the language implementation?
  I'd say that ASP.NET AJAX is flawed and excessively complex because the designers chose not to embrace Javascript, but instead chose to fight it.
  Yes, ASP.NET AJAX is complex. I think the complexity of the framework becomes obvious when you look at usage of the AJAX Control Toolkit. Nobody I know uses ACTK from client script because the code you have to write is borderline revolting. The only real way to use it is with a server-side / form designer view where all the ugliness is hidden behind property windows.
  Anyone who wants to use something like a date picking widget from script will opt for an easier to use jQuery plug-in (or something else comparable).
  I think a large part of MSAJAX's complexity comes from it's integration with server controls, and perhaps MSFT can one day provide a facade for people who prefer an easier API. Even then it's a large framework to work on top of, which is going to make people uncomfortable.
  That being said, I think it's possible to build an API that resembles a C#/Java API (with namespaces, type templates that produce objects with methods and properties, etc) and still have something workable and relatively easy to use.
  I think that approach makes sense when you are designing an API with a large surface area. So, something like Google Gears, the various mapping Bing/Google map APIs, etc.
  Hmm, maybe I should make a post out of this. I have more to say.