Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用knockout.js时应该如何定义方法?_Javascript_Oop_Data Binding_Methods_Knockout.js - Fatal编程技术网

Javascript 使用knockout.js时应该如何定义方法?

Javascript 使用knockout.js时应该如何定义方法?,javascript,oop,data-binding,methods,knockout.js,Javascript,Oop,Data Binding,Methods,Knockout.js,各种在线面向对象JavaScript教程似乎建议使用传统函数语法定义方法,例如: function x(y) { ... } 相当于: x = function (y) { ... } 此后,我发现了一些差异,例如函数名的绑定点 我使用传统的函数语法定义我的方法,但发现我无法在knockout.js中创建“submit”绑定。以下绑定不起作用: <form id="myForm" action="#" method="get" data-bind="submit: x"> 但

各种在线面向对象JavaScript教程似乎建议使用传统函数语法定义方法,例如:

function x(y) { ... }
相当于:

x = function (y) { ... }
此后,我发现了一些差异,例如函数名的绑定点

我使用传统的函数语法定义我的方法,但发现我无法在knockout.js中创建“submit”绑定。以下绑定不起作用:

 <form id="myForm" action="#" method="get" data-bind="submit: x">
但是,当我使用非传统的“赋值”函数语法时,它确实起作用

有人能解释为什么我不能绑定到使用传统语法的方法吗


如果有人知道关于不同方法语法之间差异的全面讨论,那可能是有用的。这是一个很难搜索的主题(至少在你不确定官方术语的时候)。

使用
function x(y){…}
x=function(y){…}


特别是如果在函数中定义
this.x=function(y){…}
,实际上是在函数上创建一个公共方法(OO术语中的类)。

使用
function x(y){…}
x=function(y){…}


特别是如果在函数中定义
this.x=function(y){…}
,实际上是在函数上创建一个公共方法(OO术语中的类)。

您的意思是在视图模型对象中编写第一个变量,如下所示:

var ViewModel = { 
    function x(y) { ... }
}
在这种情况下,此函数不是视图模型对象的“属性”,不能通过敲除绑定

但如果将其指定为对象的一部分,则可以将其绑定:

var ViewModel = { 
    x(y): function { ... }
}

据我所知,如果在全局范围内定义函数(与任何JS对象无关),这两个变量之间没有区别。

您的意思是在视图模型对象内编写第一个变量,如下所示:

var ViewModel = { 
    function x(y) { ... }
}
在这种情况下,此函数不是视图模型对象的“属性”,不能通过敲除绑定

但如果将其指定为对象的一部分,则可以将其绑定:

var ViewModel = { 
    x(y): function { ... }
}

据我所知,如果您在全局范围内定义函数(与任何JS对象无关),这两个变量之间没有区别。

Dommer询问差异是什么,您的回答重复了差异,但没有进一步解释差异的技术细节。你有关于差异的参考资料吗?多默问差异是什么,你的回答重复了存在差异,但没有进一步解释差异的技术细节。你有关于差异的参考资料吗?