javascript - 函数内部的 javascript 函数是全局作用域的吗?

标签 javascript oop

这是我做的测试的一个例子:

function f1(var1){
  alert('f1 called');
  function f2(var2){
    alert('f2 called');

  }
  this.data='something else';
  this.f2 = f2;
}
f1.data='something';
f1.f3 = function(var3){
    alert('f3 called');
}
console.log(f1); //shows the function
console.log(f1.data); //can have properties attached - cool
console.log(f1.f2(2)); //error: "f1.f2" is not a function
console.log(f1.f3(3)); //this works as expected

看起来 f1 中的函数 f2 在范围内是局部的。是否有任何等效的方法可以在这样的函数内调用函数?

最佳答案

不幸的是,this 绑定(bind)到 window 的全局范围,因为您还没有使用 new 实例化 f1 的实例f1();

var f = new f1();
f.f2(); // Now works

关于javascript - 函数内部的 javascript 函数是全局作用域的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42346719/

相关文章:

javascript - 使用 jquery 防止 iframe 保持焦点

javascript - 如何使第一个数组成为标题和剩余数组行的对象

c++ - C++ 中的空对象

javascript - 使用 Lodash 重构 Vue 方法?

javascript - 我无法访问 javascript 中的 radgrid 列....我如何访问这个..?

javascript - Vue js - Vue 路由器 - 登录和刷新数据

java - 父包装子类方法

java - 如何以编程方式检索方法的参数

java - instanceof 抛出不兼容的类型

使用 std 安全指针相互链接的 c++ 类 (c++)