在Knockoutjs中,功能和基于对象的视图模型之间的区别是什么?

时间:2012-03-13 19:26:24

标签: javascript knockout.js

创建像这样的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 个答案:

答案 0 :(得分:1)

考虑它的一种方法是使用第一种方法,你只能有一个对象的单个实例,所以原型没有多大意义。要向其添加toJSON方法,您只需将其定义为viewmodel.toJSON = function(){; };

使用第二种方法,您可以拥有多个具有不同属性值的Person实例。 prototype允许您将toJSON函数添加到Person的所有实例。