首页 > 移动平台 > 详细

让你弄懂 call、apply、bind的应用和区别

时间:2019-07-01 20:49:12      阅读:95      评论:0      收藏:0      [点我收藏+]

call、apply、bind使用和区别

// 有只猫叫小黑,小黑会吃鱼
const cat = {
    name: ‘小黑‘,
    eatFish(...args) {
        console.log(‘this指向=>‘, this);
        console.log(‘...args‘, args);
        console.log(this.name + ‘吃鱼‘);
    },
}
// 有只狗叫大毛,大毛会吃骨头
const dog = {
    name: ‘大毛‘,
    eatBone(...args) {
        console.log(‘this指向=>‘, this);
        console.log(‘...args‘, args);
        console.log(this.name + ‘吃骨头‘);
    },
}

console.log(‘=================== call =========================‘);
// 有一天大毛想吃鱼了,可是它不知道怎么吃。怎么办?小黑说我吃的时候喂你吃
cat.eatFish.call(dog, ‘汪汪汪‘, ‘call‘)
// 大毛为了表示感谢,决定下次吃骨头的时候也喂小黑吃
dog.eatBone.call(cat, ‘喵喵喵‘, ‘call‘)

console.log(‘=================== apply =========================‘);
cat.eatFish.apply(dog, [‘汪汪汪‘, ‘apply‘])
dog.eatBone.apply(cat, [‘喵喵喵‘, ‘apply‘])

console.log(‘=================== bind =========================‘);
// 有一天他们觉得每次吃的时候再喂太麻烦了。干脆直接教对方怎么吃
const test1 = cat.eatFish.bind(dog, ‘汪汪汪‘, ‘bind‘)
const test2 = dog.eatBone.bind(cat, ‘喵喵喵‘, ‘bind‘)
test1()
test2()

详见文章

让你弄懂 call、apply、bind的应用和区别

原文:https://www.cnblogs.com/xiaozhumaopao/p/11116544.html

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