Javascript 使用knockout.js时应该如何定义方法?
各种在线面向对象JavaScript教程似乎建议使用传统函数语法定义方法,例如: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"> 但
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询问差异是什么,您的回答重复了差异,但没有进一步解释差异的技术细节。你有关于差异的参考资料吗?多默问差异是什么,你的回答重复了存在差异,但没有进一步解释差异的技术细节。你有关于差异的参考资料吗?