call, apply, bind解析

var xw = {
name : "小王",
gender : "男",
age : 24,
say : function(sch, jun) {
console.log(arguments);
//console.log(this.name + "," + this.gender + ",今年" + this.age);
}
};

var xh = {
name : "小红",
gender : "女",
age : 18
};

xw.say();
xw.say.call(xh, "xiaoxue", "1nianjia");
xw.say.apply(xh, ["xiaoxue", "1nianjia"]);
var g = xw.say.bind(xh);
g("xiaoxue", "1nianjia")
xw.say.bind(xh, "xiaoxue", "1nianjia")();
xw.say.bind(xh)("xiaoxue", "1nianjia");
apply适合传递的参数是数组,比如arguments这样的参数。
如果你把arguments用call的方法传递的话,那么它到了另一个方法里边就是另一个方法的第一个参数,这两种情况就看自己怎么选吧~
bind返回的是一个函数,然后这个函数中的this指向第一个参数

function show(a,b){
alert('this->'+this+'\n'+
'a->'+a+'\n'+
'b->'+b
);
}

var a=show.bind(12,2,5);

a();

posted @ 2015-12-16 11:24  醉酒笑红尘  阅读(207)  评论(0编辑  收藏  举报