Yeah, it can be. The more I look at this the more I remember doing it all for variables, function/method arguments for Randori as well. I mean some type of function binding.
I am still rusty when looking at this and just doing a high level browse right at the moment. So is there any other place I am missing in my thought that needs to be bound, variable and arguments correct? Mike On Thu, Jul 16, 2015 at 4:25 PM, Josh Tynjala <joshtynj...@gmail.com> wrote: > Yeah, that looks like the function in use. The comment specifically > mentions being on the right side of an equals sign. Would the same code be > used when passed as a function argument, or would that need to happen > elsewhere? Maybe in the emitArgumentIdentifier() function above that? > > I don't know if there are other edge cases where a reference could get > passed around and lose scope. Possible, but I suspect that the assignment > and function argument cases are vastly more common. > > - Josh > > On Thu, Jul 16, 2015 at 12:33 PM, Michael Schmalle < > teotigraphix...@gmail.com> wrote: > > > HA, > > > > I just looked at the code I wrote 2+ years ago for the AMD emitter, looks > > like I already did this. :) > > > > If you look at JSAMDEmitter.java at line 845. :) That AS3.bind() call IS > > that function in javascript you just listed out. > > > > So I guess that answers that, my comment was; > > > > // AS3.bind( this,"secret$1"); > > // this will happen on the right side of the = sign to bind a > > method/function > > // to a variable > > > > Does this sound right? > > > > Mike > > > > > > On Thu, Jul 16, 2015 at 3:23 PM, Josh Tynjala <joshtynj...@gmail.com> > > wrote: > > > > > This little snippet from that wiki page looks like it should be > helpful. > > > > > > function bind(object, boundMethodName) { > > > if (object.hasOwnProperty(boundMethodName)) { > > > return object[boundMethodName]; > > > } > > > var boundMethod = object[boundMethodName].bind(object); > > > Object.defineProperty(object, boundMethodName, { > > > value: boundMethod > > > }); > > > return boundMethod; > > > } > > > > > > I don't know the internals of the emitter, but if you can detect > > > specifically when a function member is accessed (and not simply > called), > > > you'd be able to use this function there. I like that it would ensure > > that > > > binding a function only happens on demand. That's better than binding > > every > > > member function up front. All other functions that aren't being used as > > > event listeners or passed to a variable can be accessed from the > > prototype > > > chain normally. > > > > > > - Josh > > > > > > > > > On Thu, Jul 16, 2015 at 2:21 AM, Frank Wienberg <fr...@jangaroo.net> > > > wrote: > > > > > > > Hi guys, > > > > honestly I didn't read through the whole thread, but just wanted to > > > remind > > > > you of what we collected about binding methods in the Apache Flex > Wiki: > > > > > > > > > > > > > > https://cwiki.apache.org/confluence/display/FLEX/Simulating+AS3+language+features+in+JavaScript+using+AMD+and+ES5#SimulatingAS3languagefeaturesinJavaScriptusingAMDandES5-Boundmethods > > > > Maybe it helps / clarifies things! > > > > > > > > Cheers > > > > -Frank- > > > > > > > > On Wed, Jul 15, 2015 at 1:18 PM, Michael Schmalle < > > > > teotigraphix...@gmail.com > > > > > wrote: > > > > > > > > > On Tue, Jul 14, 2015 at 7:11 PM, Alex Harui <aha...@adobe.com> > > wrote: > > > > > > > > > > > Bummer. > > > > > > > > > > > > Did you try: > > > > > > > > > > > > this.addEventListener("mousedown", > > simpleButton_mousedownHandler); > > > > > > > > > > > > The “this.” might be creating a pattern that isn’t handled. I’m > > sort > > > > of > > > > > > hoping Mike will finish his mother-in-law’s bathroom and find > time > > to > > > > > > start in on some way to pass context so we don’t have to one-off > > > these > > > > > > patterns. > > > > > > > > > > > > > > > > I'm done as of last Friday but my wife keeps inventing more things > > for > > > me > > > > > to do around the house, like buying 4 pieces of trim for the doors > > and > > > > > baseboard. > > > > > > > > > > I am VERY short on time right now as it's summer and the kids are > > home, > > > > > blah blah. :) Plus I still need to keep working on my AIR projects > > for > > > my > > > > > fall goal. > > > > > > > > > > I guess, if you can create a new thread and clearly explain the > > problem > > > > and > > > > > solution I can then look at it with a clean slate and figure out > how > > > much > > > > > time it might take me to do given the current emitter's state. > > > > > > > > > > I know I did something with the other compiler and event > listeners, I > > > > would > > > > > have to look. > > > > > > > > > > Mike > > > > > > > > > > > > > > > > > > > > > > > > > > > -Alex > > > > > > > > > > > > On 7/14/15, 3:50 PM, "Josh Tynjala" <joshtynj...@gmail.com> > wrote: > > > > > > > > > > > > >Alex, > > > > > > > > > > > > > >The change you made worked for the case where the function is > > > assigned > > > > > to > > > > > > >a > > > > > > >variable, but it doesn't account for the function being passed > as > > an > > > > > > >argument to a function. > > > > > > > > > > > > > >This still doesn't work for me: > > > > > > > > > > > > > >this.addEventListener("mousedown", > > > > this.simpleButton_mousedownHandler); > > > > > > > > > > > > > >However, as a workaround, I can do this, for now: > > > > > > > > > > > > > >var mouseDownListener:Function = > > this.simpleButton_mousedownHandler; > > > > > > >this.addEventListener("mousedown", mouseDownListener); > > > > > > > > > > > > > >- Josh > > > > > > > > > > > > > >On Sun, Jun 28, 2015 at 10:13 PM, Alex Harui <aha...@adobe.com> > > > > wrote: > > > > > > > > > > > > > >> > > > > > > >> > > > > > > >> On 6/28/15, 2:21 PM, "Michael Schmalle" < > > > teotigraphix...@gmail.com> > > > > > > >>wrote: > > > > > > >> > > > > > > >> >On Sun, Jun 28, 2015 at 5:17 PM, Josh Tynjala < > > > > joshtynj...@gmail.com > > > > > > > > > > > > >> >wrote: > > > > > > >> > > > > > > > >> >> Yes, that is correct. > > > > > > >> >> > > > > > > >> >> In case it wasn't obvious, event listeners are the typical > > use > > > > case > > > > > > >> >>where > > > > > > >> >> you'd pass a reference to a member function somewhere else > > > where > > > > a > > > > > > >> >> reference needs to be saved in a variable. AS3 made this > easy > > > by > > > > > > >> >> automatically binding member functions. JavaScript usually > > > > requires > > > > > > >>some > > > > > > >> >> manual intervention to get event listeners to be called > with > > > the > > > > > > >>right > > > > > > >> >> scope. > > > > > > >> >> > > > > > > >> > > > > > > > >> >Yeah the compiler does this already for anonymous functions, > it > > > > > > >>creates a > > > > > > >> >self var pointing to 'this' and then uses self in the > anonymous > > > > > > >>function's > > > > > > >> >body. > > > > > > >> > > > > > > >> Actually, that ‘self’ stuff is for AS lexical scoping. Josh > is > > > more > > > > > > >> interested in the use of goog.bind for function identifiers. > > > > FalconJX > > > > > > >> handles that correctly in most cases for addEventListener and > > > other > > > > > > >> callbacks, but I guess we don’t handle this scenario. > > > > > > >> > > > > > > >> I can try to take a look at it, but if you want to, search for > > > > > > >>GOOG_BIND. > > > > > > >> > > > > > > >> > > > > > > > >> >I wasn't aware of this problem though, can you create a JIRA > > > > ticket? > > > > > I > > > > > > >> >probably will be the one that tackles it since I am sure Alex > > > > doesn't > > > > > > >>have > > > > > > >> >time to do something like this and test it as well. > > > > > > >> > > > > > > >> Well, I can probably get it working, but I’m sure I won’t test > > it > > > as > > > > > > >>well > > > > > > >> as you will. > > > > > > >> > > > > > > >> -Alex > > > > > > >> > > > > > > >> > > > > > > > > > > > > > > > > > > > > > > > > > > >