javascript匿名函数作用域

标签 javascript oop pointers scope anonymous-function

我有以下匿名函数:

(function() {
 var a = 1;
 var b = 2;

 function f1() {
 }

 function f2() {
 }

 // this => window object!
 // externalFunction(this);
})();

function externalFunction(pointer) {
 // pointer.f1(); => fail!
}

我需要从这个匿名函数调用外部函数并将它的指针传递给调用函数 f1 和 f2。 但我不能这样做,因为它指的是窗口对象而不是内部范围。

我可以将函数设置为:

this.f1 = function() {}

但这是个坏主意,因为它们将在全局空间中......

如何将匿名空间传递给外部函数?

最佳答案

我仍然想知道为什么您要将函数设为私有(private),而这些函数是外部需要的... 但是你去吧:

(function() {
  var a = 1;
  var b = 2;

  var obj = {
    f1: function() {
    },
    f2: function() {
    }
  }

  externalFunction(obj);
})();

function externalFunction(pointer) {
  pointer.f1(); // win
}

或者你可以单独传递 f1 和 f2,那么你不需要将它们放入对象中。

关于javascript匿名函数作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3179115/

相关文章:

c - 在 C 中使用 FILE 变量的地址和 FILE * 有什么区别?

c - 调试指针算法

javascript - 使用javascript退出IE 10或更低版本的全屏模式

javascript - 当我通过 php 包含 datepicker js 和 css 文件时,包含不起作用,但如果我将所有代码放在单个 php 页面中,则可以工作

javascript - 将 php 数组传递给 Ajax/jQuery

javascript - 在 jQuery 按钮回调中获取正确的 "this"

javascript - AngularJS UI 路由器 : ui-sref not updating URL in address bar?

java - 六角网格上的元胞自动机

c++ - "Expression must have class type"调用简单的继承方法时

c++ - 二维数组C++的复制构造函数