//类定义
A.init=function(para){
var outfun=para["outfun"];
function infun(){
//内部方法
outfun();//内部方法执行完毕后调用外部方法
}//类使用
Combox.init({
"outfun" : myfun
});function myfun(){
//自己的方法
}//如果我调用A.infun()就是先执行A类infun()再执行myfun()
//可是,如果myfun是一个带参数的方法,例如myfun(1,"a"),应该怎么写啊
}

解决方案 »

  1.   


    //类定义
    A.init=function(para){
        var outfun=para["outfun"];
        function infun(){
            //内部方法
            outfun();//内部方法执行完毕后调用外部方法
        }
    }
     
    //类使用
    Combox.init({
        "outfun" : myfun
    });
     
    function myfun(){
        //自己的方法
    }
     
    //如果我调用A.infun()就是先执行A类infun()再执行myfun()
    //可是,如果myfun是一个带参数的方法,例如myfun(1,"a"),应该怎么写啊
      

  2.   

    var first_object = { 
    num: 42 
    }; 
    var second_object = { 
    num: 24 
    }; 
    function multiply(mult) { 
    return this.num * mult; 

    Function.prototype.bind = function(obj) { 
    var method = this, 
    temp = function() { 
    return method.apply(obj, arguments); 
    }; 
    return temp; 

    var first_multiply = multiply.bind(first_object); 
    first_multiply(5); // returns 42 * 5 
    var second_multiply = multiply.bind(second_object); 
    second_multiply(5); // returns 24 * 5 
      

  3.   


    不是太理解,能解释下吗?如果myfun是这样的:
    function myfun(para1,para2,...){//参数数量不定
    }
    我想知道
    第一:
    A.init({
        "outfun" : myfun //这里我怎么给myfun()设置一个参数
    });第二:
    A.init=function(para){
        var outfun=para["outfun"];
        function infun(){
            //内部方法
            outfun();//这里我执行outfun时怎么使用外面传进来的参数
        }
    }我的目的是让A.infun执行完后执行调用者自己的方法,该方法有无参数,有几个参数由调用者决定
      

  4.   

    <HTML>
    <HEAD>
    <TITLE> New Document </TITLE>
    <script type="text/javascript">
    // 委托
    function delegate(func, scope) {
        scope = scope || window;
     
        if(arguments.length > 2) {
            var args = Array.prototype.slice.call(arguments, 2);
     
            return function() {
                return func.apply(scope, args);
            }
        } else {
            return function() {
                return func.call(scope);
            }
        }
    }
    // 比如有这样一个情况,我要在某个地方调用doSomething函数
    function doSomething(str) {
        alert('do...' + str);
     
        return true;
    }
    // 这样就获得了doSomething函数的句柄,同时又包含了参数
    var handler = delegate(doSomething,window,'wash');
     
    // 这里我就可以在其它地方,可能不在当前页面中,调用这个函数了
    // 可以去掉注释看下结果
    // alert(handler()) // 等同于alert(doSomething('wash'))
     
    </script>
    <script type="text/javascript">
    var A = {};
    //类定义
    A.init = function(para){
        var outfun=para["outfun"];
        function infun(){
            //内部方法
            outfun();//内部方法执行完毕后调用外部方法
        }
    // 调用内部方法
    infun();
    }
      
    //类使用
    A.init({
    // 使用工具类
        "outfun" : delegate(myfun,window,'wash') // 'wash'就是参数,有没有就自己放
    });
      
    function myfun(str){
        //自己的方法
    alert('do '+str)
    }
    </script>
    </HEAD><BODY></BODY>
    </HTML>