zoukankan      html  css  js  c++  java
  • ES5 bind方法

    function getConfig(colors,size,otherOptions){
        console.log(colors,size,otherOptions);
    }
    var defaultConfig=getConfig.bind(null,"#cc0000","1024*768");
    defaultConfig("123");
    defaultConfig("456");

    结果:

    #cc0000 1024*768 123
    #cc0000 1024*768 456

    解释:"#cc0000","1024*768"作为参数 colors,size传入

    function add(a,b,c){
        return a+b+c;
    }
    
    var func=add.bind(undefined,100);//会将100作为第一个参数传入
    func(1,2);//1+2+100=103
    
    var func2=func.bind(undefined,200);//将200作为第二个参数传入
    func2(10);//100+200+10=310

    bind和call以及apply一样,都是可以改变上下文的this指向的。不同的是,call和apply一样,直接引用在方法上,而bind绑定this后返回一个方法,但内部核心还是apply。

    bind是function的一个函数扩展方法,bind以后代码重新绑定了func内部的this指向(obj),但是不兼容ie6~8,兼容代码如下:

    var obj = {
      a: 1,
      b: 2,
      getCount: function(c, d) {
        return this.a + this.b + c + d;
      }
    };
     
    Function.prototype.bind = Function.prototype.bind || function(context) {
      var that = this;
      return function() {
        // console.log(arguments); // console [3,4] if ie<6-8>
        return that.apply(context, arguments);
     
      }
    }
    window.a = window.b = 0;
    var func = obj.getCount.bind(obj);
    console.log(func(3, 4));  // 10
  • 相关阅读:
    第一个Polymer应用
    Android-注解处理器
    怎样启动JDBC Debug模式,打印JDBC诊断日志
    OA项目之权限设计②
    Redis安装教程
    Skyscrapers Aren’t Scalable
    codeforces 183B
    iOS-NSMutableParagraphStyle段落风格
    【Java集合源代码剖析】Java集合框架
    经常使用的Hql语句
  • 原文地址:https://www.cnblogs.com/xiaotaiyang/p/5782118.html
Copyright © 2011-2022 走看看