在模块中查找功能

时间:2014-03-31 06:58:58

标签: javascript jquery

我有以下模块

module.js

  var Instance = (function () {

    jsfunc('fn');

    var fn = function () {
      console.log('this in fn');
    }

  }());

jsfunc.js

  function jsfunc(fn) {
    // how to find if fn is defined in Instance module
  }

当我传递字符串时,这是instance模块中的一个函数。然后我想检查jsfunc中是否定义了Instance的参数函数。 如何实现这一目标?

1 个答案:

答案 0 :(得分:4)

您需要传递函数引用而不是函数名,因为它位于闭包范围

var Instance = (function () {

    var fn = function () {
        console.log('this in fn');
    }

    jsfunc(fn);

}());

function jsfunc(fn) {
    // how to find if fn is defined in Instance module
    if (typeof fn == 'function') {
        fn()
    }
}

演示:Fiddle

另请注意,Instance的值为undefined,因为匿名函数没有返回任何值。