lihaozhou

通过简单的command(命令)模式,理解apply, call, 作用域

 (function(){
        var carManager = {
            requestInfo:function(model,id){
                return \'the infomation for \'+model+\' with \' + id+\' is in foobar\';
            },
            buyVehicle:function(model,id){
                return \'you hava successed buy  \'+model+\' with \' + id+\' \';
            },
            arrangeViewing:function(){}
        };
        carManager.execute = function(name){
            return carManager[name] && carManager[name].apply(carManager,[].slice.call(arguments,1));
        };

        carManager.execute(\'requestInfo\',\'mini\',\'1234\');

    })();

carManager[name] && carManager[name].apply(carManager,[].slice.call(arguments,1));

先从[].slice.call(arguments,1);开始说起,[]空数组使用slice方法,call(作用域,参数)。等于arguments.slice(1);并将结果返回到[]空数组里面。最后结果得到数组[\'mini\',\'1234\']

接着是carManager[name].apply(carManager,[\'mini\',\'1234\']);apply(作用域,参数(数组));将carManager[name]的作用域设置为(对象carManager),再把参数穿进去

分类:

技术点:

相关文章:

猜你喜欢
  • 2021-09-06
  • 2021-07-04
  • 2021-08-12
  • 2021-08-31
相关资源
相似解决方案