2013-05-28 31 views
2

我用我在Java中用過的方式創建了一些帶有Backbone的對象。使用javascript進行OO編程:將屬性本身作爲對象是否是一種很好的做法?

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); 
      } 
     } 
    } 
}); 

正如您所見,對象的屬性線索在創建時是一個收集線索。然而,這並不像在Java中那樣工作,因爲我不得不使用:

this.attributes.leads 

調用attribut導致的方法之一。

問:

它是不好的做法,使用對象的屬性,如果是我該怎麼辦?

回答

5

你應該只能在你的循環中做this.get('leads').add(lead);在這種情況下,this.get('leads)將返回(參考)leads集合,該集合具有add()方法。您不能這樣做this.leads.add,因爲this.leads不存在。

骨幹的this.attributes是獲取模型的所有屬性的簡便方法,但this.set()this.get()被優先用作接口,因爲在調用這些屬性時觸發事件。

+0

Thx,看起來更乾淨。 –

相關問題