今天看文档的时候,发现了一个问题:
var options = {
target: '#output1', // target element(s) to be updated with server response
beforeSubmit: showRequest, // pre-submit callback
success: showResponse // post-submit callback
// other available options:
//url: url // override for form's 'action' attribute
//type: type // 'get' or 'post', override for form's 'method' attribute
//dataType: null // 'xml', 'script', or 'json' (expected server response type)
//clearForm: true // clear all form fields after successful submit
//resetForm: true // reset the form after successful submit
};
// pre-submit callback
function showRequest(formData, jqForm, options) {
return true;
}
对象的方法为什么只有函数名,后面没有()?
回想一下平时的写法:
var options = {
target: '#output1', // target element(s) to be updated with server response
beforeSubmit: function() {},
success: showResponse // post-submit callback
// other available options:
//url: url // override for form's 'action' attribute
//type: type // 'get' or 'post', override for form's 'method' attribute
//dataType: null // 'xml', 'script', or 'json' (expected server response type)
//clearForm: true // clear all form fields after successful submit
//resetForm: true // reset the form after successful submit
};
采用匿名函数来定义一个对象的方法
再参照js对象方法的定义:1.对象的方法定义了一个函数,并作为对象的属性存储 2.对象的方法通过添加( )调用
显然,对象的方法定义了一个函数,但是并没有调用,如果加上( ),则函数会立即被调用。
附:如下函数:
function test() {
return "test";
}
分别打印
test: function test() {return "test";} //函数表达式
test(): test //函数执行结果
是不是很像?
var test = function() {
return "test";
}
为什么可以直接使用函数名呢?参照js函数定义:
函数可以通过声明定义,也可以是一个表达式。
函数声明:
function functionName(parameters) {
执行的代码
}
函数表达式:
函数表达式存储在变量中,变量可作为一个函数使用,实际上就是一个匿名函数。
var x = function (a, b) {return a * b;}
var z = x(4, 3);
总结一下:“functionName”既是函数名,又是一个函数表达式。