我有多个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
函数。
答案 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(){
......
}
}
这就是你要找的东西吗?