2011-08-17 61 views
8

如何检索backbone.js模型实例的模型名称?获取传入backbone.js模型实例的模型类型

例如:

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) 

我意识到我可能是一个模糊Backbone.js的模型和类之间的界限,所以我打开的如果需要的话要对这个其他方式。

回答

20

使用instanceof运算符。

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

虽然这将模型类型与已知对象进行比较,但是可以获取Backbone对象的模型类型,以便我可以创建该模型的新实例吗? –

+7

@NileshC:如果'obj'是一个已存在的对象,那么'var newObj = new(obj.constructor)();'将会创建一个相同类型的新实例。这假设对象在构建时被正确地“接线”(这对于用Backbone创建的对象是一个安全的假设)。 – Lee