On 27/03/2012 17:46, Matthew Hazlett wrote:
In the init add:
root = this;
then in the child object change:
this.b() to root.b();
http://jsfiddle.net/hazlema/nBn2t/
root becomes a single global variable, pointing to THAT instance. any
other instances will overwrite it and it all sounds like an
anti-pattern. even if you somehow use a closure and protect this 'leak'
so it's per-instance, it's still not a good idea.
Child is a new object and scope _should_ be different - it will be the
actual Child object.
you can this.Child.a.call(this) to change scope and run it in the next
context of the instance.
you can also change Child to be a function that returns an object or
self-memoizes on first call to turn into an object but with the correct
bindings since the function will correctly reference the instance on the
first run and can then bind the object methods.
but you really ought to look at separating the two or using other
classes / instances.
Good luck.
--
Dimitar Christoff
"JavaScript is to JAVA what hamster is to ham"
http://fragged.org/ | @D_mitar | https://github.com/DimitarChristoff