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了!!!!!!
上面的代码有毒。
网友评论