在淘汰赛js中,我看到视图模型声明为:
var viewModel = {
firstname: ko.observable("Bob")
};
ko.applyBindings(viewModel );
要么:
var viewModel = function() {
this.firstname= ko.observable("Bob");
};
ko.applyBindings(new viewModel ());
两者之间有什么区别(如果有)?
我的确在Google淘汰赛google组上找到了此讨论,但实际上并没有给我令人满意的答案。
我可以看到一个原因,想用一些数据来初始化模型,例如:
var viewModel = function(person) {
this.firstname= ko.observable(person.firstname);
};
var person = ... ;
ko.applyBindings(new viewModel(person));
但是,如果我不这样做,那么选择哪种样式有关系吗?
这与敲除没有关系,而一切与简化JavaScript中自定义对象的实例化有关
—
zzzzBov 2012年
@Kev如果viewModel是构造函数,则可以像var PersonViewModel = function(){...};一样在UpperCase中编写它。
—
伊丽莎白2013年
prototype
方法(例如,通常从服务器获取数据并相应地更新视图模型的方法)。但是,您仍然可以明显地将它们声明为对象文字的属性,因此我看不出有什么区别。