您的位置:首页 > 移动开发

call, apply, bind解析

2015-12-16 11:24 211 查看
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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: