Matt ...in addition to utilizing Prototype's bind in the manner Chris described ... you might also want to reference/read up on 'closures<http://www.jibbering.com/faq/faq_notes/closures.html>' in JavaScript<http://www.amazon.com/JavaScript-Definitive-Guide-David-Flanagan/dp/0596101996/ref=pd_bbs_sr_1/002-9021338-4100056?ie=UTF8&s=books&qid=1184745874&sr=8-1>, as JS closures are related to Prototype's bind.
cheers- On 7/18/07, Christophe Porteneuve <[EMAIL PROTECTED]> wrote: > > > Matt a écrit : > > I'm having some difficulty with the periodical executer, I use it > > within one of my objects and when I use 'this' it doesn't actually > > reference the object. Here is the example: > > Binding 101, Matt. Change your initialize line: > > > new PeriodicalExecuter(this.pollRadio, 2); > > To this: > > > new PeriodicalExecuter(this.pollRadio.bind(this), 2); > > BTW, you may probably want to store that PE ref somewhere in case you > need to stop the PE from running at some point. > > > However I have no idea with the reference to 'this' isn't the right > > one and there's probably a better way. Any idea? If there's no better > > Look at http://prototypejs.org/api/function/bind or grab some good JS > book (or mine, for that matter) and read on "this", execution contexts, > binding, etc. > > Essentially, the trick is: whenever you pass a method reference around, > it loses its "this", okay? The only way for a method to be properly > bound to an instance is to call it directly on the instance (e.g. > "this.method(a, b)" or "someObj.method(a, b)". Anything else will lose > the binding. > > Prototype provides a bind method for functions that spews out an > anonymous function (not associated to your original object in itself, so > you can safely pass it around), and this new function essentially makes > sure to call your original method on its proper instance. > > -- > Christophe Porteneuve a.k.a. TDD > "[They] did not know it was impossible, so they did it." --Mark Twain > Email: [EMAIL PROTECTED] > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Spinoffs" group. To post to this group, send email to rubyonrails-spinoffs@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/rubyonrails-spinoffs?hl=en -~----------~----~----~----~------~----~------~--~---