zoukankan      html  css  js  c++  java
  • 珂理化函数

    有个需求:过一秒后执行fn,传递一个数字100,让fn中的this变为obj,输出"柯理化函数100"
        var name = "window";
    
        var obj = {name: "柯理化函数"};
    
        function fn(e, num) {
            console.log(this.name + num);
        }
    

     

     第一种思路,常规想法:

        window.setTimeout(fn, 1000);//->this window ->windowundefined
    
        window.setTimeout(fn,1000)
        document.addEventListener("click",fn,false);

      1)不灵活控制this
      2)不能传递形参的值

        window.setTimeout(function () {
                fn.call(obj, 100);
            }, 1000);
    

      

    用珂理化函数来解决:

        function bind(callBack, context) {
            var outerArg = Array.prototype.slice.call(arguments, 2);
            return function () {
                var innerArg = Array.prototype.slice.call(arguments, 0);
                var arg = innerArg.concat(outerArg);
                callBack.apply(context, arg);
            }
        }
    

      

     window.setTimeout(bind(fn, obj, 100, 200), 1000); //珂理化函数200
        window.setTimeout(function () {
            fn.apply(obj, [100, 200]); //珂理化函数200
        }, 1000);
    
        document.addEventListener("click", bind(fn, obj, 100, 200), false); //珂理化函数100
        document.addEventListener("click", function (e) {
            fn.apply(obj, [e, 100, 200]);  //珂理化函数100
        }, false);
    

      

  • 相关阅读:
    VuGen错误处理函数
    LR的日志
    创建性能测试脚本时如何选择HTML模式和URL模式
    Java变量
    查找&排序
    selenium执行JS
    Python中 is 和 == 的区别
    Python中 and or的计算规则
    selenium使用location定位元素坐标偏差
    错误:Could not find an available JavaScript runtime
  • 原文地址:https://www.cnblogs.com/cataway/p/5084359.html
Copyright © 2011-2022 走看看