Consider this:
function f2(x) {
return x+1;
};
X = function(){
this.f1=function (x) {
return 2*f2(x);
}
return this;
};
then x = new X(); x.f1(1) works fine.
But when i want to do this:
X = function(){
this.f2 = function(x) {
return x+1;
};
this.f1=function (x) {
return 2*f2(x);
}
return this;
};
The same statement will complain that it can’t find f2.
In, for example c#, you can say
class X {
int f2(int x){return x+1;}
int f1(int x){return 2*f2(x);}
}
and this will work
X x=new X();
x.f1(1)
Why?
To reference
f2in your second code block, you’ll need to usethis.f2.thisreferences the context in which the function is being executed. Since you callf1in the following way:… the
contextis set to the instance,x.JavaScript does not make instance variables available to the scope in the same way as scope variables, i.e. those directly available: