如何调用其他javascript文件中定义的静态JS函数

时间:2016-02-27 18:10:47

标签: javascript meteor

我正在使用Meteor JS。 我在文件A中定义了一个JavaScript函数,我希望通过从文件B调用来重用它。例如:

档案A:

function Storeclass(){}
Storeclass.validate=function(){...}

从JavaScript我尝试调用StoreClass.validateBasic()它可以正常工作,但同样的调用不适用于B.此外,我尝试在B中执行var storeClassObj=new StoreClass();storeClassObj.validate()。我收到错误ReferenceError: StoreClass is not defined

2 个答案:

答案 0 :(得分:0)

因为文件B中的函数可能在文件A准备好之前调用,所以你必须确保成功加载所有必需的js文件。

如果您正在使用jQuery,那么在文件B中,您可以在文档就绪函数中调用您的函数:

$( document ).ready(function() {
    //File A code
});

或以纯JavaScript形式:

(function() {
   // your page initialization code here
   // file A code

})();

答案 1 :(得分:0)

关于Meteor中的命名空间,请阅读此doc

相关部分是:

// File Scope. This variable will be visible only inside this
// one file. Other files in this app or package won't see it.
var alicePerson = {name: "alice"};

// Package Scope. This variable is visible to every file inside
// of this package or app. The difference is that 'var' is
// omitted.
bobPerson = {name: "bob"};

但是,稍后在同一个文档中,它说:

  

在声明函数时,请记住函数x(){}只是JavaScript中var x = function x(){}的简写。

这表明您编写的函数是私有到文件A,无法从文件B访问,即使加载顺序正确!