首页 > 移动平台 > 详细

call、apply、bind的区别

时间:2019-07-04 18:55:14      阅读:119      评论:0      收藏:0      [点我收藏+]
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

 

call、apply、bind的区别

原文:https://www.cnblogs.com/konghaowei/p/11133930.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!