Javascript 如何访问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

我正在为一个使用requireJS的网站编写脚本,这个奇怪的语法我以前从未见过

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
语句,根本不是有效的变量名