我应该何时/为什么从 BackboneJS 模型/集合扩展函数返回
When/why should I return from a BackboneJS model/collection extend function?
我是BackboneJS的新手,在Smashing Magazine上看了这篇文章,我想知道扩展函数何时/为什么要返回模型/集合/东西。
var Hotel = Backbone.Model.extend({
defaults: {
"availableRooms": ["a"],
"rooms": [
{
"name": "a",
"size": 1200,
"bed": "queen"
},
{
"name": "b",
"size": 900,
"bed": "twin"
},
{
"name": "c",
"size": 1100,
"bed": "twin"
}
],
// how come this function does not return
getRooms: function() {
var rooms = $.extend(true, {}, this.get("rooms")),
newRooms = {};
// transform rooms from an array back into an object
_.each(rooms, function(room) {
newRooms[room.name] = {
"size": room.size,
"bed": room.bed
}
});
},
// but this one does
getRoomsByBed: function(bed) {
return _.where(this.getRooms(), { "bed": bed });
}
}
});
请善待。我不是想拆解别人的代码 - 我只是想了解Backbone是如何工作的。:-)
谢谢
你可以考虑将 Backbone 中使用的 extend
函数作为对 OO 世界的引用,其中类通常被扩展以创建子类。在Javascript中,这些"类"必须存储在变量中(例如,在Java中声明类),以使它们可供应用程序使用。
所以你可以看到这个:
var Dog = Mammal.extend({...});
var dog = new Dog();
作为这个的一个版本
class Dog extends Mammal { ... }
Dog dog = new Dog();
因此,主干扩展函数返回正在扩展的"类"的"子类"。当然,Javascript远不是面向对象的,所以不要从字面上理解这一点,但这个概念是同一个大概的。
相关文章:
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- Node.js v6.2.0类扩展不是函数错误
- 扩展移相器按钮类不工作
- chrome扩展中的navigator.geolocation.getCurrentPosition
- chrome扩展:尽管运行了at:documentidle,js脚本还是过早启动
- chrome扩展更改主机/域警告
- Meteor-将选定窗体中的对象添加到集合中
- TableExport jquery插件:文件名和扩展名问题
- 如何在chrome扩展中重定向到html页面
- Chrome扩展没有't在重新加载之前考虑期权价值
- 扩展SVGTextElement时出现Typescript Uncaught TypeError
- 如何通过自己获得Chrome扩展的用户反馈/错误报告
- Javascript”;类“;带有参数的扩展
- 主干集合重置和解析
- 试图阻止Chrome通过扩展关闭
- 使用数据上的角度更改设置集合的第一个元素的动画
- 向扩展数组的JS集合添加对象(继承?)
- 我应该何时/为什么从 BackboneJS 模型/集合扩展函数返回
- 复合视图在扩展主干集合时未收到“删除”事件
- 在js中用程序扩展一个可折叠的集合