2011-08-17 3 views
8

Come posso recuperare il nome del modello per un'istanza del modello backbone.js?Ottieni il tipo di modello per un'istanza del modello backbone.js passata

Ad esempio:

var Topic = Backbone.Model.extend({ 

}) 
var topic = new Topic({ type: 'question' }) 

var doSomethingWithTopic = function(topic) { 
    // check if passed in topic is of type Topic 
    // something like topic.constructor.name === 'Topic' 
} 

doSomethingWithTopic(topic) 

Mi rendo conto che può essere confondendo il confine tra un modello backbone.js e una classe, quindi sono aperto ad altri modi di andare su questo, se necessario.

risposta

20

Utilizzare l'operatore instanceof.

var doSomethingWithTopic = function(topic) { 
    if(topic instanceof Topic) { 
    // do something with topic 
    } 
} 
+1

Mentre questo confronta il tipo di modello con un oggetto conosciuto, è possibile ottenere il tipo di modello di un oggetto Backbone in modo che possa creare una nuova istanza di quel modello? –

+7

@NileshC: se 'obj' è un oggetto esistente, quindi' var newObj = new (obj.constructor)(); 'creerà una nuova istanza dello stesso tipo. Ciò presuppone che l'oggetto è stato "cablato" correttamente quando è stato costruito (che è un'assunzione sicura per gli oggetti creati con Backbone). – Lee