核心
- fn.bind(obj, 1, 2); // 改变fn中的this,指向obj,fn不立即执行
- fn.call(obj, 1, 2); // 改变fn中的this,指向obj,fn立即执行
- fn.apply(obj, [1, 2]); //改变fn中的this,指向obj,参数是数组,指向obj,fn立即执行
示例代码
1)bind不立即执行
var me={
name:'我'
}
var friendA={
name:'朋友A',
sendMsg:function(){
console.log("【"this.name"】");
}
}
var sendMsg = friendA.sendMsg.bind(me);
sendMsg;
2)call立即执行
var me={
name:'我'
}
var friendA={
name:'朋友A',
sendMsg:function(){
console.log("【"this.name"】");
}
}
var sendMsg = friendA.sendMsg.call(me);
3)apply立即执行
var me={
name:'我'
}
var friendA={
name:'朋友A',
sendMsg:function(target,content){
console.log("【"+this.name+"】给【"+target+"】发送了短信:"+content);
}
}
var sendMsg = friendA.sendMsg.apply(me,['朋友B','你好啊老朋友!']);