在Backbone.js'上设置属性的模式是什么;模型和视图

What is the pattern for setting attributes on Backbone.js' Models and Views?

本文关键字:模式 是什么 模型 视图 属性 设置 js Backbone      更新时间:2023-09-26

我是Javascript框架世界的新手,我真的很喜欢Backbonej的工作方式。但是我有一个关于模型和视图的构造函数的问题。多年来,我一直在使用类似Java的语言进行开发,我习惯于定义这样的构造函数:

public Car(Manufacturer manufacturer, String model, Color color) {
    this.manufacturer = manufacturer;
    this.model = model;
    this.color = color;
}

但我在文档和其他教程中看到,人们在定义模型或视图时通常不会声明特定的构造函数,他们只是构造这样的对象:

var car = new Car({manufacturer: ford, model: "Mustang", color: "red"});

定义这样的构造函数是错误的还是"丑陋的":

window.Car = Backbone.Model.extend({
    initialize: function(manufacturer, model, color) {
        this.manufacturer = manufacturer;
        this.model = model;
        this.color = color;
    }
});

如果是,你能解释一下原因吗?我真的希望这不是一个愚蠢的问题,我没有发现任何相关的问题。

您可以传入多个参数而不是一个对象,但是您希望initialize函数看起来像这样:

window.Car = Backbone.Model.extend({
    initialize: function(manufacturer, model, color) {
        this.set({
            manufacturer: manufacturer,
            model: model,
            color: color
        });
    }
});

您需要使用set来访问attributes对象。通过使用this,可以将属性直接附加到模型。

主干使用attributes对象的原因是,当您更改属性时,它可以自动触发事件。这也是一种在方法中封装字段的方法,就像创建一样

private Manufacturer manufacturer;

public Manufacturer getManufacturer()

在java中。

这类似于在Java中将上下文对象传递给方法(在无状态环境中需要将某些状态传递给方法的情况下执行)。恰好该方法是一个构造函数。我不认为这有一个具体的官方模式。这是javascript中常见的范例。