gpt4 book ai didi

javascript - javascript : is it good practice to have attributes being objects themselves? 中的 OO 编程

转载 作者:行者123 更新时间:2023-11-29 17:16:58 26 4
gpt4 key购买 nike

我用 Backbone 创建了一些对象,就像我以前在 Java 中所做的那样。

var Lead = Backbone.Model.extend({
defaults: {
lng: 0,
lat: 0,
distance: 0
},
initialize: function () {

}
});

var Leads = Backbone.Collection.extend({
model: Lead
});

var Map = Backbone.Model.extend({
defaults: {
leads: null
},
initialize: function () {
this.set("leads",new Leads());
},
addJson: function (json) {

var key;

for (key in json) {
if (json.hasOwnProperty(key)) {

var lead = new Lead({ lng: parseFloat(json[key].lng.replace(",", ".")), lat: parseFloat(json[key].lat.replace(",", ".")), distance: json[key].distance });
this.attributes.leads.add(lead);
}
}
}
});

如您所见,对象Map的属性导数在创建时是一个Collection Leads。但是,这不像在 Java 中那样有效,因为我不得不使用:

this.attributes.leads

调用属性导引的方法之一。

问题:

将对象用作属性是否是一种不好的做法,如果是,我应该怎么做?

最佳答案

您应该能够在循环中执行 this.get('leads').add(lead)this.get('leads) 在这种情况下将返回(对)leads 集合,该集合具有 add() 方法。您不能执行 this.leads.add,因为 this.leads 不存在。

Backbone 的 this.attributes 是获取模型所有属性的便捷方式,但是 this.set()this.get() 首选作为接口(interface),因为在调用这些接口(interface)时会触发事件。

关于javascript - javascript : is it good practice to have attributes being objects themselves? 中的 OO 编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16794050/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com