gpt4 book ai didi

javascript - 兼容单例 Backbone.Model

转载 作者:行者123 更新时间:2023-11-29 20:05:35 24 4
gpt4 key购买 nike

嗨,有人能给我一个带有下划线的 once() 的 requirejs 单例的可理解示例吗?

目前我有这个:

define(['jquery', 'underscore', 'backbone'], function($, _, Backbone) {

var SingletonModel = Backbone.Model.extend({
urlRoot: "/model",
idAttribute: "_id"
});

return function() {
once(SingeletonModel);
};

});

正如您看到的,特别是 return 语句完全是废话。我只是不知道如何将 Backbone.Model 单独化...

最佳答案

如果你想要一个 AMD 兼容的单例,你可以使用下面的:

define(
[...],
function() {
var MyModel = Backbone.Model.extend({
//...
});

return new MyModel();
}
);

由于 require.js 的工作方式,您应该只获得一个 MyModel 实例。

据我了解,_.once(someFunction) 生成一个只能被调用一次的函数,因为它的返回值被存储,所以每次函数在第一次调用后,它的原始返回值将被返回。

然而,对于单例情况,您使用 _.once(MyModel) 返回一个构造函数,该构造函数始终返回相同的对象(据我所知)。我们可以测试一下:http://jsfiddle.net/gfarrell/Z3CNc/

正如您在那个 fiddle 中看到的那样,如果您在构造函数的末尾 return this; 就可以了。尝试删除 return this;,然后使用控制台输出检查第二个实例,您会发现它没有第一个实例的属性。

关于javascript - 兼容单例 Backbone.Model,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12028600/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com