相关疑难解决方法(0)

敲除视图模型之间的区别声明为对象文字与函数

在淘汰赛中,我看到View Models声明为:

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

ko.applyBindings(viewModel );
Run Code Online (Sandbox Code Playgroud)

要么:

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

ko.applyBindings(new viewModel ());
Run Code Online (Sandbox Code Playgroud)

如果有的话,两者之间有什么区别?

我确实在knockoutjs google小组上找到了这个讨论,但它并没有给我一个满意的答案.

如果我想用一些数据初始化模型,我可以看到一个原因,例如:

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

var person = ... ;
ko.applyBindings(new viewModel(person));
Run Code Online (Sandbox Code Playgroud)

但如果我不这样做,我选择哪种风格呢?

javascript knockout.js

193
推荐指数
2
解决办法
4万
查看次数

var self = this?

使用实例方法作为事件处理程序的回调改变的范围this"我的实例""无论只是调用的回调".所以我的代码看起来像这样

function MyObject() {
  this.doSomething = function() {
    ...
  }

  var self = this
  $('#foobar').bind('click', function(){
    self.doSomethng()
    // this.doSomething() would not work here
  })
}
Run Code Online (Sandbox Code Playgroud)

它有效,但这是最好的方法吗?这对我来说很奇怪.

javascript jquery closures scope

180
推荐指数
4
解决办法
10万
查看次数

标签 统计

javascript ×2

closures ×1

jquery ×1

knockout.js ×1

scope ×1