likes
comments
collection
share

恋爱版理解call和apply

作者站长头像
站长
· 阅读数 44

哈哈哈哈哈哈,学不会是不是因为你没对象~

有个这样的故事,男主角叫沐沐,女主角叫花花,男孩纸有才华,女孩纸有美貌,自从他们在一起之后,他们就一起相亲相爱变得更好了~

一 他们的日常

1.他们的爱好

花花喜欢用勺子吃蛋糕,为了保持身材,也会用运动器材跳绳和做哑铃,花花买了各种运动器材,什么都有,女孩纸怕胖

    const huahua = {
      name: '蛋糕',
      like: '文章',
      eat() {
        console.log(`吃${this.name}`) // 吃西瓜
      },
      exercise(x, y) {
        console.log(`快乐的${x}, ${y}`); // 快乐的打球, 做哑铃
      }
    }

沐沐喜欢用电脑写代码

   const mumu = {
     like: 'code',
     name: '西瓜',
     write() {
       console.log(`写${this.like}`) // 写文章
     }
   }
2.他们的相处

某天下午沐沐想吃西瓜,但是发现没有勺子,那沐沐想借用花花的勺子,那当然可以呀

huahua.eat.apply(mumu)

于是打印了吃西瓜,花花的勺子(huahua这个对象的eat功能),但是使用的人是沐沐(调用方法的人已改变)

这时花花想写文章,于是借用了沐沐的电脑

 mumu.write.apply(huahua)

于是打印了写文章,沐沐的电脑(沐沐这个对象的电脑打字功能),但是使用的人是花花(调用方法的人已改变)

沐沐吃完西瓜,说: BB,可以借你的运动器材给我用一下嘛?我吃多了变胖就不帅了

   huahua.exercise.apply(mumu, ['打球', '做哑铃'])

于是打印了快乐的打球, 做哑铃, 这里先是指定调用人,然后以数组的方式传参. 当然也可以用下面这种方式调用

 huahua.exercise.call(mumu, '打球', '做哑铃')

二 他们的爱情故事

嘿嘿嘿,写代码了,爱情啥? 你有对象吗你?

总结: apply方法可以当作是一种方法的借调: 也就是说把某个方法引用到不包含它的某个对象上. 方法(函数)是用来被对象调用才能够执行的, 而apply恰恰指向了调用当前方法的对象

apply和call改变了this的指向,也就是改变了调用者

call和apply传参的不同就是call穿的是单个参数,字符串的方式传参,而apply是用数组的方式, 如何记忆: apply单词比较长,数组也是比较长的,长长的数组,长长的数组,长长的数组,记住了吗?

生活愉快哦-_-

转载自:https://juejin.cn/post/6925625926885572615
评论
请登录