我正在尝试开发一个小型Spotify应用程序,但有一些问题。我有一个对象Foo
,我希望将其保存在一个单独的文件中,并且需要在我的主文件中。然后在我的主文件中,我想创建这样的对象:var baz = new Foo(some, arguments)
。但我无法让它发挥作用。
我正在使用API的1.0版本,Spotify以某种形式使用requirejs,对吗?
示例:https://github.com/spotify/apps-tutorial/blob/1.0/js/tutorial.js
所以,我尝试使用两个文件foo.js和main.js这样做。
// main.js
require([
'$api/models',
'foo'], function(models, Foo) {
var f = new Foo("hello", "world");
...
});
// foo.js
// define() doesn't work? So I tried with require again...?!
require(['$api/models'], function(models) {
function Foo(some, arg) {
this.some = some;
this.arg = arg;
}
Foo.prototype.getSome() { return this.some; }
return Foo;
});
执行new Foo(..)
时,这会在主文件中出现错误“对象不是函数”。
为什么?我想这是因为我在foo.js中使用require()?那我应该用什么呢?
编辑:
好的,所以我似乎应该使用exports
,例如:exports.myMethod = myMethod;
但是我需要导出一个方法来创建并返回一个Foo对象的实例及其所有实例方法等,对吗?
答案 0 :(得分:0)
我这样解决了这个问题:
//foo.js
require(['$api/models'], function(models) {
var Foo = (function() {
var foo = function(some, arg) {
// Do stuff..
};
return foo;
})();
exports.Foo = Foo;
});
然后在main.js中我需要这样: 要求([ '脚本/富#富'] ...
似乎工作正常。不知道这是不是最好的方法。