On 13.09.2010 12:30, Dmitry A. Soshnikov wrote:

Regarding non-|this|-bounded -- yeah, I think that it's better to use exactly a delegation and reuse functions from mixed modules. Despite that properties are references to the same objects, augmented (with traits or mixins) objects have own properties, that decreases reusing (if to remove a function from a trait, it still will be exists in the augmented object). Currently, it's easily possible to implement delegation based traits/mixins even in ES3 (though, with non-standard extenstion such as __proto__ and __noSuchMethod__, for example: http://gist.github.com/575982). With using new Proxies (and possibly WeakMap) mechanism it's should be possible to implement them for Harmony.


Forgot to notice, the method "extend" which Prototype.js borrowed from Ruby (as actually all other things Prototype.js borrowed from Ruby, since this js-framework initially was created as addition for Ruby on Rails) adapted to browser host-environment and for to be cross-browser, uses /static augmentation /of objects. However, in Ruby this "extend" method uses exactly delegation to the mixed module (that is, if a some function is added to the module, it automatically available from the object to which this module is mixed). I.e. extend/include just adds additional delegate ("prototype") object. And if JavaScript would have such mechanism, I'm sure that Prototype.js's "extend" would be created also as delegated non-|this|-bounded function.

Dmitry.
_______________________________________________
es-discuss mailing list
es-discuss@mozilla.org
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to