call和apply以及bind的区别以及使用方法

例:

var girl = {
    name: "小红",
    age: "7"
}

var boy = {
    name:"小明",
    age: "8",
    fullName: function (sex,hobby) {
        return this.name + "今年" + this.age + "岁,性别" + sex + ",喜欢" + hobby;
    }
}

boy.fullName("男","打游戏")//小明今年8岁,性别男,喜欢打游戏
boy.fullName.call(girl,"女","跳舞") //小红今年7岁,性别女,喜欢跳舞
boy.fullName.apply(girl,["女","跳舞"]) //小红今年7,性别女,喜欢跳舞
boy.fullName.bind(girl,"女","跳舞")() //小红今年7,性别女,喜欢跳舞

相同之处
从上面打印出的结果不难看出 call、apply、bind 都是用来修改 this 指向的方法。不传任何参数的时候,则默认为将 this 指向修改为 windows,有参数的时候 this 指向第一个参数。

不同之处
call 方法传递给函数的多个参数通过逗号分隔

apply 方法传递给函数的多个参数需要使用数组的方式传递

bind 它的参数和 call 一样,但是返回的是函数,所以使用 bind 记得后面加括号调用

call 和 apply 哪个性能比较好
其实当没有参数的时候,call 和 apply 是没有明显区别的。但是当有 this 指向或者执行参数时,call 的性能要明显优于 apply,尤其是参数超过三个的时候

因为 apply 的参数是通过数组的方式传递,解析数组获取参数需要消耗性能。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值