我正在使用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
。
答案 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访问,即使加载顺序正确!