Javascript——bind()、apply()与call()

    bind()、apply()与call()都是用第一个参数改变调用函数的执行上下文,也就是this,apply()与call()的主要区别是两个函数都可以传多个参数,但是call()是一个一个的传进去,apply()把第二个参数之后的参数放进一个数组进行传值,两者与bind()的区别是,bind()返回的是一个函数,需要自己去调用,而call与apply就会直接调用。

var xw = {
    name : "张三",
    gender : "男",
    age : 12,
    say : function(school,grade) {
        console.log(this.name + " , " + this.gender + " ,今年" + this.age + " ,在" + school + "上" + grade);                                
    }
}
var xh = {
    name : "李四",
    gender : "男",
    age : 13
}
xw.say.call(xh,"实验小学","六年级");  
xw.say.apply(xh,["实验小学","六年级"]);
xw.say.bind(xh,"实验小学","六年级")();

模拟bind()

if (!function() {}.bind) {
    Function.prototype.bind = function(context) {
        var self = this, args = Array.prototype.slice.call(arguments);
        return function() {
            return self.apply(context, args.slice(1));    
        }
    };
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值