函数的bind方法

作者: 前端沐先生 | 来源:发表于2017-04-18 11:32 被阅读58次

    bind的作用:
    将函数绑定至某个对象,在函数fn()上调用bind(o),会在o上绑定一个新的fn()方法,且该方法中的this指向是o;

    var name ='windowName';
    var object1 = {
      name: '李雷'
      ,sex: '男'
      ,getName: function(){
        return this.name;
      }
    }
    var object2 = {
      name: '韩梅梅'
      ,sex: '女'
      ,getSex: function(){
        return this.sex;
      }
    }
    

    参数说明:
    首个参数:定被绑定后的函数中this的指向。

    // 虽然object2并没有getName方法,但是通过bind将getName绑定至object2后,object2就拥有了getName方法;
    object2.getName = object1.getName.bind();
    object2.getName(); //==> windowName  当第一个参数未设置时,函数中的指向将指向window
    object2.getName = object1.getName.bind(object1);
    object2.getName(); //==> 李雷
    object2.getName = object1.getName.bind(object2);
    object2.getName();  // ==> "韩梅梅"
    

    其它参数: 指定形参值。

    function getAge(name, year){
      var age = new Date().getFullYear() - year;
      return name +'今年' + age + '岁了';
    }
    var object = {
      name: 'two'
    }
    object.getAge = getAge.bind(object,'baukh'); // 通过第二个参数指定函数getAge的数据name=baukh
    object.getAge(1987); // ==> "baukh今年29岁了"
    
    

    大吃一惊,已经29了!!!!!!
    上面的代码有毒。

    相关文章

      网友评论

        本文标题:函数的bind方法

        本文链接:https://www.haomeiwen.com/subject/utyfzttx.html