2011-08-17 13 views
8

¿Cómo recupero el nombre del modelo para una instancia del modelo backbone.js?Obtenga el tipo de modelo para una instancia del modelo backbone.js pasado

Por ejemplo:

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) 

realizo me puede desdibujar la línea entre un modelo Backbone.js y una clase, así que estoy abierto a otras formas de ir sobre esto, si es necesario.

Respuesta

20

Utilice el operador instanceof.

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

Si bien esto compara el tipo de modelo con un objeto conocido, ¿es posible obtener el tipo de modelo de un objeto Backbone para poder crear una nueva instancia de ese modelo? –

+7

@NileshC: si 'obj' es un objeto existente, entonces' var newObj = new (obj.constructor)(); 'creará una nueva instancia del mismo tipo. Esto supone que el objeto estaba "cableado" correctamente cuando se construyó (lo cual es una suposición segura para los objetos creados con Backbone). – Lee

Cuestiones relacionadas