2012-03-13 26 views
0

有沒有創造一個像這麼視圖模型之間的差異:Knockoutjs函數和基於對象的viewmodel之間的區別是什麼?

var viewmodel = { 
    firstName: ko.observable(), 
    lastName: ko.observable() 
} 

和:

function Person(firstName, lastName) { 
    this.firstName = ko.observable(firstName); 
    this.lastName = ko.observable(lastName); 
} 

viewModel = new Person('john', 'doe'); 

我這麼問是因爲我想一個原形功能添加到第一個方式和它的不讓我。像這樣:

viewModel.prototype.toJSON = function() { .. } 

瀏覽器抱怨原型是未定義的。我只是想做什麼this article顯示..但我有這個問題。我在想它是因爲我創建視角模型的差異。但不知道。

回答

1

想一想,它的一種方式是使用第一種方法,只能有一個對象的單個實例,因此原型沒有多大意義。要將toJSON方法添加到它,您可以將其定義爲viewmodel.toJSON = function(){; };

使用第二種方法,您可以擁有Person的多個實例,並具有不同的屬性值。原型允許您將toJSON函數添加到Person的所有實例。

+0

謝謝,這很有道理 – 2012-03-13 20:07:55

+0

我想知道如何將viewmodel作爲JavaScript對象而不是函數定義來管理'this'?我嘗試了「自我:這個」,但它似乎沒有適當的工作。 – SCS 2012-11-15 17:02:01

相關問題