使用对象字面量声明的knockout视图模型与使用函数声明的视图模型之间的区别

6 浏览
0 Comments

使用对象字面量声明的knockout视图模型与使用函数声明的视图模型之间的区别

在knockout js中,我看到View Models可以声明为以下两种形式之一:

1. 使用字面量对象的方式声明:

var viewModel = {
    firstname: ko.observable("Bob")
};
ko.applyBindings(viewModel);

2. 使用构造函数的方式声明:

var viewModel = function() {
    this.firstname= ko.observable("Bob");
};
ko.applyBindings(new viewModel());

这两种方式有什么区别吗?我在knockoutjs的谷歌讨论组中找到了这个讨论,但并没有给我一个令人满意的答案。

如果我想要使用一些数据来初始化模型,比如:

var viewModel = function(person) {
    this.firstname= ko.observable(person.firstname);
};
var person = ... ;
ko.applyBindings(new viewModel(person));

那么我可以理解选择使用构造函数的方式。但如果我不这样做,选择哪种方式有什么区别吗?

0