Для ссылки на f2
во втором блоке кода вам нужно будет использовать this.f2
.this
ссылается на контекст, в котором выполняется функция.Поскольку вы вызываете f1
следующим образом:
x.f1();
... context
устанавливается на экземпляр, x
.
JavaScript не делает переменные экземпляра доступными для области так же, как переменные области, то есть те, которые доступны напрямую:
X = function(){
var f2 = 123;
this.f2 = function(x) {
return x+1;
};
this.f1=function (x) {
console.log(f2); // => 123
console.log(this.f2); // => function(){}
return 2 * this.f2(x);
};
return this;
};