Javascript 如何访问requireJS模块中的函数和对象
我正在为一个使用requireJS的网站编写脚本,这个奇怪的语法我以前从未见过Javascript 如何访问requireJS模块中的函数和对象,javascript,backbone.js,requirejs,Javascript,Backbone.js,Requirejs,我正在为一个使用requireJS的网站编写脚本,这个奇怪的语法我以前从未见过 define("app/models/UserModel", ["backbone", "lang/Lang"], function (e, t) { var n = e.Model.extend({ defaults: { item: "", these: "", arent: "", impor
define("app/models/UserModel", ["backbone", "lang/Lang"], function (e, t) {
var n = e.Model.extend({
defaults: {
item: "",
these: "",
arent: "",
important: "en",
relationship: 0,
_position: {
c: 0,
r: 0
}
},
hasPermission: function (e) {
return this.get("permission") >= e
},
getTotalPoints: function () {
return this.get("somestuff")
}
});
我已经使用require([“app/models/UserModel”])来加载模块,并使用require(“app/models/UserModel”)。默认情况下,尝试加载对象,使用相同的方法尝试使用函数,但它只是返回说它们不存在。我已经能够以同样的方式访问另一个模型中的函数,但是对于大多数其他模型,它不起作用
除此之外,我想知道var n=e.Model.extend是否与此有关。我不明白它的功能是什么。异步模块加载工作需要这种结构。RequireJS模块是在
define
调用的函数中构造的;这个函数应该是。在您的情况下,您需要以下内容:
define("app/models/UserModel", ["backbone", "lang/Lang"], function (backbone, lang) {
var MyModel = backbone.Model.extend({
defaults: {
item: "",
these: "",
arent: "",
important: "en",
relationship: 0,
_position: {
c: 0,
r: 0
}
},
hasPermission: function (e) {
return this.get("permission") >= e
},
getTotalPoints: function () {
return this.get("somestuff")
}
});
// return the created model object so that it is
// accessible as require("app/models/UserModel").default_
return {
default_: MyModel
}
});
(不过要注意,我对脊梁骨并不熟悉)。另外,我猜您正在使用的模块被缩小了,然后被美化了,因为变量名只有一个字母长,而且不太容易记忆?另外,default
是一个关键字,用于switch
语句,根本不是有效的变量名