javascript中,函数也是对象。
先说下js的两种定义函数对象的方式:
上面的两种定义方式本质上是一样的。所以如果将这两个函数当做对象传递的时候,写法也是一样的。
下面看一下javascript中,函数当做对象传递的例子
//被调用的方法 function commMethod (){ alert("commMethod is doing something"); } //调用函数commMethod 的方法 function methodInvoke(method){ method(); } methodInvoke(commMethod);
很显然,上面的例子也可以这么写
var commMethod = function(){ alert("commMethod is doing something"); } //调用函数commMethod 的方法 function methodInvoke(method){ method(); } methodInvoke(commMethod);
这两种的方式是一样的。
当然,我们也可以不定义commMethod,直接用无具名的对象 调用。
function methodInvoke(method){ method(); } methodInvoke(function(){ alert("commMethod is doing something"); });
这种写法和上面的写法是一样的。
下面写一种带参的调用:
//被调用的方法
function commMethod(keword){
alert("commMethod is doing something" + keword);
}
//这个和function commMethod这种定义的方式效果一样,不再单独写。
/**var commMethod = function(keword){
alert("commMethod is doing something" + keword);
}**/
//调用函数commMethod方法
function methodInvoke(method){
var keyword = " hi,girl";
method(keyword);
}
methodInvoke(commMethod);
结果
commMethod is doing something hi,girl"
如果用无具名函数进行调用,你会不会迷糊呢?反正我一开始迷糊了。
function methodInvoke(method){ var keyword = " hi,girl"; method(keyword); } methodInvoke(function(key){ alert("无具名函数的调用:::" + key); });
结果:
无具名函数的调用::: hi,girl
无具名函数的调用和上面的函数调用过程是一样的,只不过比较难理解一些。
看完了上面的过程,你再看下jquery的ajax请求里面的get方法
$.get("test.php", function(data){
alert("Data Loaded: " + data
);
});
对于data的值怎么来的,是不是倍感亲切了。