2011-08-17 97 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