Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.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 如何销毁BackboneFactory中创建的对象及其存储位置?_Javascript_Backbone.js_Factory_Backbone Model - Fatal编程技术网

Javascript 如何销毁BackboneFactory中创建的对象及其存储位置?

Javascript 如何销毁BackboneFactory中创建的对象及其存储位置?,javascript,backbone.js,factory,backbone-model,Javascript,Backbone.js,Factory,Backbone Model,这是的源,相当于: 看起来在经过一些复杂的逻辑之后,create方法将创建一个我们在主干中定义的模型的新对象。如果我们有一个User模型,Backbone.create(User)将创建一个新的用户对象 这些对象存储在哪里 它们是否与生产共享同一数据库 如果在内存中,它们最终会被垃圾收集吗 简而言之,我关心的是在运行测试套件时这些对象会发生什么 如果我们有一个用户模型主干。创建(用户)将创建一个新的 用户对象 它是BackboneFactory.create('user'),仅当您以前使用B

这是的源,相当于:

看起来在经过一些复杂的逻辑之后,create方法将创建一个我们在主干中定义的模型的新对象。如果我们有一个
User
模型,
Backbone.create(User)
将创建一个新的用户对象

  • 这些对象存储在哪里
  • 它们是否与生产共享同一数据库
  • 如果在内存中,它们最终会被垃圾收集吗
简而言之,我关心的是在运行测试套件时这些对象会发生什么

如果我们有一个
用户
模型<代码>主干。创建(用户)将创建一个新的 用户对象

它是
BackboneFactory.create('user')
,仅当您以前使用
BackboneFactory.define('user',user)为
user
定义了工厂时,它才起作用

这些对象存储在哪里

在全局BackboneFactory对象的以下属性中:

factories: {},
sequences: {},
它们是否与生产共享同一数据库

这与此无关,因为工厂只返回您已经定义的模型类中的模型实例

假设您有此型号:

var User = Backbone.Model.extend({
    urlRoot: "api/user",
    defaults: {
        name: "Foo",
        randomNumber: 4
    }
});
使用工厂实例化:

BackboneFactory.define('user', User);
// somewhere later
var instance = BackboneFactory.create('user', { name: "bar" });
与手动实例化相同

var instance = new User({ name: "bar" });
如果在内存中,它们最终会被垃圾收集吗

看起来它并没有提供一个简单的删除工厂的功能,但它并没有真正的用处,因为你创建工厂是为了在你的应用程序中使用它们

您可以手动删除工厂哈希和/或序列:

BackboneFactory.factories = {};
BackboneFactory.sequences = {};
但我不会在正常用例中这样做,除非出现特定的问题。对于测试套件,可能这是“重置”BackboneFactory对象的最简单方法



话虽如此,我不会按原样使用那个图书馆。有很多好主意,但是对于这样一个简单的库,代码缺少很多改进。一个最大的禁忌是默认情况下它是全局的,并且不可能创建
BackboneFactory
的不同实例。它有一个问题。

我看到你在这一次之后还问了其他问题。你对我的回答有什么顾虑吗?
BackboneFactory.factories = {};
BackboneFactory.sequences = {};