Functions: call / apply / f()

  • Thread starter Philippe Poulard
  • Start date
P

Philippe Poulard

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 |
 
M

Martin Honnen

Philippe said:
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?
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.
 
P

Philippe Poulard

Martin Honnen a écrit :
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
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 |
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,997
Messages
2,570,239
Members
46,827
Latest member
DMUK_Beginner

Latest Threads

Top