前言,我们写js的时候,经常会看到一些方法,比如说:
$("#ids").click(function( alert("Click me"); )); ---------------------------------------------------- $.ajax({ url:url, success:function(data){ alert("SUCCESS"); }, error:function(e){ alert("ERROR"); } });
又或者说
var http = new XMLHttpRequest(); http.onreadystatechange = go; ........ function go(){ alert(); }
大家应该会看到一个特点,这里面的js,都是以一个方法作为参数的,那么,它是怎么实现的呢?
一:以方法作为参数
这下来说直接以一个方法来作为参数的写法,直接上代码:
-----------这样调用的方法------------- go(function(){ alert("success"); });
那么,这样直接以一个function作为参数,那么go方法要如接收呢?
-------------以这样的形式接收并调用,这里显示两种方法调用-----------------
function go(fn){ alert("执行go方法");
//下面两种方式都可以 fn(); fn.call(this); }
二:以方法名作为参数
如果参数里面是一个方法的名称,在我拿到这个方法名称的时候,我要如何去调用这个方法呢?
-------------------调用的方式是这样的--------------------- go("hello");//hello是一个方法名称
接收并执行的方式是这样的
-----------------接收并执行------------------ function go(fn){ alert("执行hello方法") //这是调用方法 window[fn].call(this); }
我们可以拿到window[方法名称].call(this);
里面的this,代表着一个对象,如果需要对象来执行这个方法的时候,就需要写,否则的话,参数可以不写