执行 Backbone where 和 findWhere 按值或引用返回模型
Do Backbone where and findWhere return model by value or reference
where(( 和 findWhere(( 方法是否在集合或模型副本中返回模型本身?正如我阅读的文档一样,它没有明确和具体地指出这种情况。
第一种方法,可以修改返回的结果,并在其上使用set()
来添加新属性或直接更改现有属性的值,而无需在集合中包含此模型set()
后调用add()
。
Backbone.js(以及一般的javascript(通过引用完成所有操作,因此除非明确这样做,否则永远不会克隆模型。您可以通过在模型/集合上调用.clone()
或通过将 Backbone.Model 传递到另一个模型构造函数 ( new Backbone.Model(model)
( 来克隆模型。
在 Backbone 中,您可以在集合、数组、对象或任何内容之间移动模型,并且它们不会在此过程中被克隆。
http://jsfiddle.net/CoryDanielson/Lj3r85ew/
var origModel = new Backbone.Model({ id: 0 });
// where and findWhere return the model instance, not clones.
var collection = new Backbone.Collection([origModel]),
where = collection.where({ id:0 })[0],
findWhere = collection.findWhere({ id:0 });
where === origModel; // true
findWhere === origModel; // true
-
// Cloning a model
var copy1 = origModel.clone(),
copy2 = new Backbone.Model(origModel.toJSON()),
copy3 = new Backbone.Model(origModel);
copy1 === origModel; // false
copy2 === origModel; // false
copy3 === origModel; // false
where(( 和 findWhere(( 函数的操作方式与各自的下划线.js命令类似。
这两种方法都返回对原始对象的引用。 find
返回一个数组,而findWhere
返回单个对象(或undefined
(
相关文章:
- 返回 JavaScript 类值而不是对象引用
- 为什么根据括号的位置来引用窗口或对象?并返回undefined
- 表单验证返回引用错误
- 在Angularjs服务中为返回对象引用的http请求提供的数据构建简单的缓存
- _.find 是否返回对对象的引用?如何正确设置结果的属性
- getValues() 从包含引用的单元格中检索值时返回 0.0
- 在 JavaScript 中,如何从更深层次的嵌套方法引用方法的返回值
- 为什么在 JavaScript 中引用对象的不存在属性不会返回引用错误
- 执行 Backbone where 和 findWhere 按值或引用返回模型
- 如何在 javascript 中引用从像 bottle 这样的 Web 框架返回的数据
- 引用变量,它执行函数,但是向变量中添加字符串,将函数作为字符串而不是值返回
- 挖空扩展可观察 取消引用时返回未定义
- 为什么角度返回带有引用错误:ngResource 未定义
- 茉莉花测试返回错误“未捕获的引用错误:未定义要求”
- 返回的Javascript VM对象具有错误的引用
- 为什么对原型的这两个引用返回不同的值?
- 在JavaScript中,如何从方法中通过引用返回数组的一部分
- 如何将ActionScript中函数的引用返回给JavaScript
- document.getElementById对文档的JS引用返回错误
- JavaScript布尔值作为值返回,而不是作为引用返回