Javascript方法用法

时间:2012-05-30 18:35:42

标签: javascript knockout.js

在浏览KnockoutJS的示例时,我看到了下面的code

function WebmailViewModel() {
    // Data
    var self = this;
    self.folders = ['Inbox', 'Archive', 'Sent', 'Spam'];
    self.chosenFolderId = ko.observable();

    // Behaviours    
    self.goToFolder = function(folder) { self.chosenFolderId(folder); };    
};

ko.applyBindings(new WebmailViewModel());

我不是Javascript的专家,但对使用self.chosenFolderId(folder);

感到困惑

selectedFolderId是一个属性,并根据其他语言的经验分配ko.observable();

  1. 如何通过传递self.chosenFolderId(folder);
  2. 之类的参数来调用它
  3. 文件夹定义在哪里?
  4. 如果你能指出一篇解释这个问题的文章。

    感谢。

3 个答案:

答案 0 :(得分:1)

chosenFolderId是一个属性,但属性可能是函数(在这种情况下必须是函数)。

因此ko.observable返回一个带有单个参数(文件夹)的函数。

与下一行没什么不同:

self.goToFolder = function(folder) { ... };

goToFolder属性设置为函数。

folder本身被“定义”为goToFolder参数的参数。无论调用 goToFolderfolder提供了值。

答案 1 :(得分:0)

javascript中的函数是第一类对象。 ko.observable()是一个函数调用,它的返回值本身就是一个函数。

基本上我可以这样做:

var observable = function(some_param) {
  return function(some_other_param) {
    // do something useful here
  }
}

然后我可以致电:

observable(1)(2);

答案 2 :(得分:0)

在javascript函数中可以赋值给变量,作为参数传递给函数,从函数返回等等。换句话说,'lie First-class