Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Meteor-如何从其他JS文件调用外部类方法?_Javascript_Oop_Meteor_Instantiation - Fatal编程技术网

Javascript Meteor-如何从其他JS文件调用外部类方法?

Javascript Meteor-如何从其他JS文件调用外部类方法?,javascript,oop,meteor,instantiation,Javascript,Oop,Meteor,Instantiation,我是新来的流星。我一直试图以“面向对象的方式”编写meteor代码,因此我为解析器创建了一个名为Message的对象,并从app.js中调用了它的方法 我想实例化该对象并从我的app.JS调用Message.JS中定义的方法 应用程序结构 应用程序 |--app.html |--app.js |--app.css |--message.js |--.流星 message.js var Message = { init: function( message ){ /* I

我是新来的流星。我一直试图以“面向对象的方式”编写meteor代码,因此我为解析器创建了一个名为Message的对象,并从app.js中调用了它的方法

我想实例化该对象并从我的app.JS调用Message.JS中定义的方法

应用程序结构 应用程序
|--app.html
|--app.js
|--app.css
|--message.js
|--.流星

message.js

  var Message = {


    init: function( message ){

   /* Initialization function with some properties */

   }

  getHash: function() {
    return this.hash_table;
   }

  parseMessage: function(input) {

 /* Some Parsing logic */

  return(hash_table);
 }
 }
if (Meteor.isServer) {

 var msg = new Message.init(response);
 var hash =  msg.getHash();
 console.log(hash);

}
app.js

  var Message = {


    init: function( message ){

   /* Initialization function with some properties */

   }

  getHash: function() {
    return this.hash_table;
   }

  parseMessage: function(input) {

 /* Some Parsing logic */

  return(hash_table);
 }
 }
if (Meteor.isServer) {

 var msg = new Message.init(response);
 var hash =  msg.getHash();
 console.log(hash);

}

使用var声明的变量在Meteor中有一个文件作用域,不能从其他文件中访问。 如果您声明的变量没有var,那么它的作用域会更大,可以从应用程序中看到

Message = {
    ...
}

如果这不起作用,您可能会对加载顺序有问题。应该在调用app.js中的代码之前加载message.js中的代码。要确保是这样,请将message.js放在/lib文件夹中。此文件夹中的文件总是在加载其他文件之前加载。

将message.js添加到名为lib的文件夹中,以便在meteor启动时首先加载它。然后从消息中删除var,使其成为全局的。

谢谢您的回复。但将消息声明为不带var的全局变量是行不通的。如何从app.js导入类?@mariudarila在主描述中添加了app结构。我认为这是加载顺序的问题。尝试将消息js添加到lib文件夹。顺便说一句,您不能实例化一个没有函数的对象,因此new Message.init()将不起作用。Try var msg=Message.init(响应);或者,如果需要多个消息对象message=function(message){this.message=message}和var msg=newmessage(response);