Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.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 如何使用对象文字作为requirejs模块?_Javascript_Requirejs - Fatal编程技术网

Javascript 如何使用对象文字作为requirejs模块?

Javascript 如何使用对象文字作为requirejs模块?,javascript,requirejs,Javascript,Requirejs,我正在尝试使用requireJS了解javascript AMD模式。我对面向对象编程非常陌生,对requireJS也很陌生。我希望有人能帮我 我用object literal定义了一个名为“module3”的测试模块: define([], function () { var _name = 'this is a test3'; var returnedModule3={ name:'test', getName:getName }

我正在尝试使用requireJS了解javascript AMD模式。我对面向对象编程非常陌生,对requireJS也很陌生。我希望有人能帮我

我用object literal定义了一个名为“module3”的测试模块:

define([], function () {
    var _name = 'this is a test3';
    var returnedModule3={
        name:'test',
        getName:getName
    }
    function getName() {
            return _name;
        }
    return returnedModule3;

});
然而,在main.js文件中,当我在加载该文件后调用该模块时,我在firebug中得到一个错误,它说“TypeError:module3ref不是构造函数”。下面您将在我的主文件中看到代码:

// Load modules and use them
require(['myModule/module3'], function(module3ref){
    // do something with the loaded modules
    var module3 = new module3ref();
        console.log("module3.getName:"+module3.getName()); 
});

这是否意味着我们不能使用对象文字来创建模块?

我已经试过了。试试这个:

define([], function () {
  var _name = 'this is a test3';
  var returnedModule3 = function(){
    this.name = 'test';
    this.getName = getName
  }
  function getName() {
    return _name;
  }
  return returnedModule3;    
});
注意
应附加到
returnedModule3
中的每个属性,以便从外部/其他JS文件访问,否则它对函数是私有的,您将得到错误
对象没有方法getName

代码问题:在代码中,您试图创建对象的实例

另一种方法(导出对象): 如果您想像导出
returnedModule3一样导出
Object
,则必须将
main.js
定义为:

require(['module3'], function(module3ref){
  // do something with the loaded modules
  console.log("module3.getName:"+module3ref.getName());
});

我已经试过了。试试这个:

define([], function () {
  var _name = 'this is a test3';
  var returnedModule3 = function(){
    this.name = 'test';
    this.getName = getName
  }
  function getName() {
    return _name;
  }
  return returnedModule3;    
});
注意
应附加到
returnedModule3
中的每个属性,以便从外部/其他JS文件访问,否则它对函数是私有的,您将得到错误
对象没有方法getName

代码问题:在代码中,您试图创建对象的实例

另一种方法(导出对象): 如果您想像导出
returnedModule3一样导出
Object
,则必须将
main.js
定义为:

require(['module3'], function(module3ref){
  // do something with the loaded modules
  console.log("module3.getName:"+module3ref.getName());
});

逐字解释问题的标题:,例如:

定义({
getName:function(){
返回“这是一个test3”;
},
名称:“测试”
})

但是,使用这种模式,一个属性不可能引用其“邻居”(但这是JS对象文字语法的限制,而不是RequireJS本身)。

逐字解释问题的标题:,例如:

定义({
getName:function(){
返回“这是一个test3”;
},
名称:“测试”
})

然而,使用这种模式,一个属性不可能引用其“邻居”(但这是JS对象文字语法的限制,而不是RequireJS本身)。

我在一个新的module4文件中尝试了您的代码,并相应地修改了主文件;但我仍然会遇到同样类型的错误。我检查过了-我的文件结构很好谢谢你的帮助。我只是在用不同的方法做实验。这个更新的解决方案应该可以像我在模块1和模块2中尝试的那样工作。如果你能解释一下为什么另一种方法不起作用,那就太好了。我在另一篇文章中看到,他们使用相同的方法创建对象安全性。请参阅下面的链接:您能否给出一个关于如何在这种情况下使用模块3的示例?请检查我的更新解决方案。你可以像那样使用module3。您可以将“name”称为“console.log”(“module3.name:+module3ref.name);”“getName”为“console.log”(“module3.getName:+module3ref.getName());”。希望这会有帮助。非常感谢你的帮助。我试过你的新密码;它工作得很好。我现在更明白了。让我困惑的是MDN文档“”中的内容。使用对象初始值设定项是创建新对象的一种方法。我对创建对象和对象实例有点困惑。我在一个新的module4文件中尝试了你的代码,并相应地修改了主文件;但我仍然会遇到同样类型的错误。我检查过了-我的文件结构很好谢谢你的帮助。我只是在用不同的方法做实验。这个更新的解决方案应该可以像我在模块1和模块2中尝试的那样工作。如果你能解释一下为什么另一种方法不起作用,那就太好了。我在另一篇文章中看到,他们使用相同的方法创建对象安全性。请参阅下面的链接:您能否给出一个关于如何在这种情况下使用模块3的示例?请检查我的更新解决方案。你可以像那样使用module3。您可以将“name”称为“console.log”(“module3.name:+module3ref.name);”“getName”为“console.log”(“module3.getName:+module3ref.getName());”。希望这会有帮助。非常感谢你的帮助。我试过你的新密码;它工作得很好。我现在更明白了。让我困惑的是MDN文档“”中的内容。使用对象初始值设定项是创建新对象的一种方法。我对创建对象和对象实例有点困惑。