函数的bind方法

bind,函数bind

拭目以待 发布于

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了!!!!!!

上面的代码有毒。