Javascript方法用法

Javascript方法用法,javascript,knockout.js,Javascript,Knockout.js,在浏览KnockoutJS的示例时,我看到了以下内容 我不是Javascript方面的专家,但对self.chosenFolderId(文件夹)的用法有点困惑 chosenFolderId是一个属性,赋值为ko.observable()根据其他语言的经验 如何通过传递像self.chosenFolderId(folder)这样的参数来调用它 文件夹定义在哪里 如果你能指出一篇文章来解释这一点,那就行了 谢谢。javascript中的函数是一流的对象ko.observable()是一个函数调用,其

在浏览KnockoutJS的示例时,我看到了以下内容

我不是Javascript方面的专家,但对self.chosenFolderId(文件夹)的用法有点困惑

chosenFolderId是一个属性,赋值为
ko.observable()根据其他语言的经验

  • 如何通过传递像
    self.chosenFolderId(folder)这样的参数来调用它
  • 文件夹定义在哪里
  • 如果你能指出一篇文章来解释这一点,那就行了


    谢谢。

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

    基本上我可以这样做:

    var observable = function(some_param) {
      return function(some_other_param) {
        // do something useful here
      }
    }
    
    然后我可以打电话:

    observable(1)(2);
    

    chosenFolderId
    是一个属性,但属性可以是函数(在本例中必须是)

    因此
    ko.observable
    返回一个函数,该函数只接受一个参数(文件夹)

    这和下一行没什么不同:

    self.goToFolder = function(folder) { ... };
    
    其中,
    goToFolder
    属性被设置为函数


    文件夹
    本身作为
    goToFolder
    的参数被“定义”为一个参数。任何调用
    goToFolder
    都会为javascript函数中的
    文件夹提供一个值

    ,这些函数可以分配给变量、作为参数传递给函数、从函数返回等等。换句话说,谢谢你,戴夫。所以参数(文件夹)不必是特定的类型。我知道JS本质上是动态的。那么,类型信息不需要?@bsreekanth几乎可以肯定它需要是某个类型,或者包含一个对框架有意义的值——我不知道该类型或值是什么样子。您可以通过在
    goToFolder
    函数中设置断点或记录断点来确定它是什么。。最明显的区别是Javascript不使用强数据类型,因此参数没有为它们指定类型,而是采用传递给它们的任何数据类型。此外,Javascript是解释的而不是编译的,因此任何不匹配都会在运行时而不是编译时检测到,因为没有编译步骤。@b回顾一下,在大多数(所有?)现代Java脚本中都有编译步骤,只是它通常对用户不可见,例如在浏览器上下文中。我的观点是,参数确实需要是特定的类型和/或值,只是无法指定当前JS中代码之外的类型和/或值。
    self.goToFolder = function(folder) { ... };