在浏览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();
self.chosenFolderId(folder);
如果你能指出一篇解释这个问题的文章。
感谢。
答案 0 :(得分:1)
chosenFolderId
是一个属性,但属性可能是函数(在这种情况下必须是函数)。
因此ko.observable
返回一个带有单个参数(文件夹)的函数。
与下一行没什么不同:
self.goToFolder = function(folder) { ... };
将goToFolder
属性设置为函数。
folder
本身被“定义”为goToFolder
参数的参数。无论调用 goToFolder
为folder
提供了值。
答案 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。