Function.call and Function.apply

H

HopfZ

I would like to check if my understanding of the two functions are
correct.

Is this correct? The following three lines are equivalent, for
example, [1] can be replaced with [2] or [3] anywhere in a script
without changing the return value and without changing any side effect.


[1] var r = o.f(a,b);
[2] var r = o.f.call(o,a,b);
[3] var r = o.f.apply(o,[a,b]);

( o is an object and o.f is a function. )

The following three lines are equivalent:
[1'] var r = g(a,b);
[2'] var r = g.call(this,a,b);
[3'] var r = g.apply(this,[a,b]);

( g is a function, for example,
var g = function(a,b){return [this,a,b];}. )
 
L

Lasse Reichstein Nielsen

HopfZ said:
Is this correct? The following three lines are equivalent ....
[1] var r = o.f(a,b);
[2] var r = o.f.call(o,a,b);
[3] var r = o.f.apply(o,[a,b]); Correct


The following three lines are equivalent:
[1'] var r = g(a,b);
[2'] var r = g.call(this,a,b);
[3'] var r = g.apply(this,[a,b]);

Only if used where "this" refers to the global object (i.e., the call
is in the global scope or inside a function called in this way).

/L
 

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

No members online now.

Forum statistics

Threads
473,766
Messages
2,569,569
Members
45,042
Latest member
icassiem

Latest Threads

Top