call、apply、bind的区别

call、apply、bindfunction自带的方法作用是改变function中的this指向
 
call、apply、bind共同点:
(1)改变functionthis对象的指向
(2)第一个参数都是this要指向的对象
(3)后续参数继续传参
 
各自特点:
call:接受连续参数
apply:接受数组参数
bind:不会立即执行,再次调用才执行
apply、call作用完全一样只是接受参数方式不太一样
举个例子:
var a = {
    name : "Tom",
    sex : true,
    age : 18,
    qqq : function(school,grade) {
        console.log(
            "名称:"+this.name + " ;" +
            "性别:"+this.sex + " ;" +
            "年龄:"+this.age + " ;" +
            "学校:"+school + " ;" +
            "年级:"+grade + " ;" 
        )
    }
}
var b = {
    name : "Anny",
    sex : false,
    age : 17
}

// b "继承" a 的属性和方法。绑定后会立即执行函数

a.qqq.call(b,"实验小学","一年级"); // 接受连续参数

a.qqq.apply(b,["实验小学","一年级"]); // 接受数组参数

var c = a.qqq.bind(b); // 不会立即执行
c("实验小学","一年级") // 再次调用就开始执行

a.qqq.bind(b)("实验小学","一年级") // 这样子写也行(反正也是调用)

过程解释:

 

最后推荐一些我学习call、apply、bind时收藏的一些写的不错的文章:
https://www.cnblogs.com/pssp/p/5215621.html#

https://www.cnblogs.com/libin-1/p/6069031.html

 

转载于:https://www.cnblogs.com/konghaowei/p/11133930.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值