Help | Site Map
Connecting Tech Pros Worldwide
 
 
LinkBack Thread Tools
  #1  
Old September 5th, 2008, 09:35 AM
Philippe Poulard
Guest
 
Posts: n/a
Default Functions: call / apply / f()

Hi folks !

I have some code like this that passes an anonymous function:
foo.bar(p1, function(p2) {
alert(p2);
});

in foo.bar, i create a button with a listener; when it is executed, the
following code fails to run:

bar : function(somePara, someFunction) {
...
someButton.addListener("execute", function(e) {
someFunction(someData);
});
...
}

I google for some documentation and this version works well:

bar : function(somePara, someFunction) {
...
someButton.addListener("execute", function(e) {
someFunction.call(null, someData);
});
...
}

I don't understand the difference between f.apply(), f.call() and f()
and why the latter doesn't work

In fact, when using f("foo") the function is executed (I'm sure of that
when I insert alert("Hello")), but without its argument if in the body
of the anonymous function i use alert(p2) it fails

Please can you explain this behaviour ?

--
Cordialement,

///
(. .)
--------ooO--(_)--Ooo--------
| Philippe Poulard |
-----------------------------
http://reflex.gforge.inria.fr/
Have the RefleX !
  #2  
Old September 5th, 2008, 11:45 AM
Martin Honnen
Guest
 
Posts: n/a
Default Re: Functions: call / apply / f()

Philippe Poulard wrote:
Quote:
I have some code like this that passes an anonymous function:
foo.bar(p1, function(p2) {
alert(p2);
});
>
in foo.bar, i create a button with a listener; when it is executed, the
following code fails to run:
>
bar : function(somePara, someFunction) {
...
someButton.addListener("execute", function(e) {
someFunction(someData);
});
...
}
Do you get an error? Which one exactly?
Quote:
I google for some documentation and this version works well:
>
bar : function(somePara, someFunction) {
...
someButton.addListener("execute", function(e) {
someFunction.call(null, someData);
});
...
}
>
I don't understand the difference between f.apply(), f.call() and f()
and why the latter doesn't work
>
In fact, when using f("foo") the function is executed (I'm sure of that
when I insert alert("Hello")), but without its argument if in the body
of the anonymous function i use alert(p2) it fails
>
Please can you explain this behaviour ?
So the alert dialog does not appear? Have you checked the error console
of the browser?
I don't see a reason why f() should fail but f.call() should execute.

--

Martin Honnen
http://JavaScript.FAQTs.com/
  #3  
Old September 5th, 2008, 01:35 PM
Philippe Poulard
Guest
 
Posts: n/a
Default Re: Functions: call / apply / f()

Martin Honnen a écrit :
Quote:
Philippe Poulard wrote:
>
Quote:
>I have some code like this that passes an anonymous function:
>foo.bar(p1, function(p2) {
> alert(p2);
>});
>>
>in foo.bar, i create a button with a listener; when it is executed, the
>following code fails to run:
>>
>bar : function(somePara, someFunction) {
> ...
> someButton.addListener("execute", function(e) {
> someFunction(someData);
> });
> ...
>}
>
Do you get an error? Which one exactly?
No because it is trapped by the framework within which it is executed
(that doesn't log it correctly); but it fails because i don't get the
alert box (I'm sure the block is executed because if I insert
alert("Hello"); before alert(p2); I see the former but not the latter)

Therefore, it seems that a reference to p2 make all the stuff crashing
Quote:
>
Quote:
>I google for some documentation and this version works well:
>>
>bar : function(somePara, someFunction) {
> ...
> someButton.addListener("execute", function(e) {
> someFunction.call(null, someData);
> });
> ...
>}
>>
>I don't understand the difference between f.apply(), f.call() and f()
>and why the latter doesn't work
>>
>In fact, when using f("foo") the function is executed (I'm sure of
>that when I insert alert("Hello")), but without its argument if in the
>body of the anonymous function i use alert(p2) it fails
>>
>Please can you explain this behaviour ?
>
So the alert dialog does not appear? Have you checked the error console
of the browser?
I don't see a reason why f() should fail but f.call() should execute.
ok, so it's not my fault :)
since f.call() works, I have changed to it in my code

--
Cordialement,

///
(. .)
--------ooO--(_)--Ooo--------
| Philippe Poulard |
-----------------------------
http://reflex.gforge.inria.fr/
Have the RefleX !
 

Bookmarks

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are Off
[IMG] code is Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

What is Bytes?

We are a network of experts and professionals in IT and software development that help one another with answers to tough questions and share insights. Get the best answers to your questions from over network members.
Post your question now . . .
It's fast and it's free

Popular Articles