在事件发生后调用在多个javascript文件中处理的函数

时间:2016-07-27 12:26:40

标签: javascript

我有多个javascript文件,并且所有这些文件都存在userIsLoggedin函数,我希望在用户登录后,在所有javascript文件中调用userIsLoggedin函数。

有我的代码:

login.js

...
userIsLoggedin();
...

file_1.js

...
function userIsLoggedin(){  ...  }
...

file_2.js

...
function userIsLoggedin(){  ...  }
...

file_3.js

...
function userIsLoggedin(){  ...  }
...

...

file_n.js

...
function userIsLoggedin(){  ...  }
...

但它只调用userIsLoggedin文件中的file_n.js函数。

2 个答案:

答案 0 :(得分:1)

在每个js中,定义名称空间,如

var login = {
    userIsLoggedin: function() {
    }
};

此处login是命名空间名称

使用更改的命名空间名称在所有js文件中复制此相同的脚本(例如,使用file_1替换登录,file_2,file_3 ...同样

然后调用所有登录功能,如

login.userIsLoggedin();
file_1.userIsLoggedin();
file_2.userIsLoggedin();
file_3.userIsLoggedin();
.
.
.
file_n.userIsLoggedin();

您可以创建一个全局函数,您可以在其中添加所有这些调用。

答案 1 :(得分:0)

如果我正确看到你的例子,JS只允许最后一个文件加载的函数声明有效。会发生什么是每个文件将被评估,下一个将覆盖声明。因此,如果您要查看命名空间中可用的函数,则只会声明最后一个函数。

如果您需要从每个文件触发它,您需要以不同的方式组织代码。类似的东西:

login.js

var obj1 = require('obj1.js');
var obj2 = require('obj2.js');
...
var objN = require('objN.js');

(function userIsLoggedin(){
  obj1.userIsLoggedIn();
  obj2.userIsLoggedIn();
  ...
  objN.userIsLoggedIn();
})();

obj1.js

module.export = {
  userIsLoggedIn: function(){
    ......
  }
}

obj1.js

module.export = {
  userIsLoggedIn: function(){
    ......
  }
}

objN.js

module.export = {
  userIsLoggedIn: function(){
    ......
  }
}

这就是你要找的东西吗?