我应该何时/为什么从 BackboneJS 模型/集合扩展函数返回

When/why should I return from a BackboneJS model/collection extend function?

本文关键字:集合 扩展 函数 模型 返回 BackboneJS 何时 为什么 我应该      更新时间:2023-09-26

我是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远不是面向对象的,所以不要从字面上理解这一点,但这个概念是同一个大概的。