On 03/10/11 20:44, Axel Rauschmayer wrote:
super being rare and moving methods being rarer, I think the tradeoff
for performance is OK, especially as there will be a method that
allows you to move methods. If performance wasn’t an issue, dynamic
"super" would be preferable.
Hm, I wouldn't consider moving methods to be that rare, unless you're
taking into account only people coding in a declarative style. In that
case, moving a method would be a weird thing to do. On the other hand,
if you're writing imperative prototypical code, moving methods might not
be such a rare thing — more so if we take into account the lack of
multiple-inheritance facilities in JS, which would lead someone to use
things like mixins (thus, more overhead due to manual copying, but
mixins are — or should be — parentless anyways).
Note, though, that this is based only on my own code. I am not much
knowledgeable about the general use-case of JavaScript, so feel free to
correct me where I'm rambling non-senses :3
Another point is what "here" should refer to in a situation like:
---
var oddball = {
clone: function() {
this.instances = (+this.instances || 0) + 1
return this }
, describe: function() {
return this.name + ' has ' + this.instances + ' copies' }}
var object = oddball <| {
describe: function() {
return '<#object ' + super.describe() + '>' }}
var me = object.clone()
me.name = 'Me'
var another = {
describe: function() {
return 'The princess is in another castle.' }}
me.describe()
// => '<#object Me has 1 copies>'
object.describe.call(Object.create(another))
// => '<#object undefined has undefined copies>'
---
In this case, should `here' take into account the object in which the
action `describe' is defined, in this case resolving to
`oddball.describe', or should it take into account the object that was
the target of the action, in this case resolving to `another.describe'.
My opinion is that the latter makes more sense, but that's because I see
`thisObject' not just as a data-container, but something that describes
the full behaviours of a thing.
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss