数组apply、call和bind示例

apply 方法其实就是改变某个方法的 this 指向,并且可以向该函数传参(数组形式参数)。

const s1 = {
  name: "张三",
  age: 22,
};

const s2 = {
  name: "李四",
  age: 44,
};

const s3 = {
  name: "王五",
  age: 66,
  hello: function (trashTalking = "", ...args) {
    console.log(
      // 注意 this 指向的对象
      // ...args 剩余参数的数组
      // ?? 空值合并操作符
      this.age + "岁的" + this.name + trashTalking + (args[0] ?? "")
    );
  },
};

s3.hello(); // 66岁的王五
s3.hello.apply(s1, ["你还好吗"]); // 22岁的张三你还好吗
s3.hello.apply(s2, ["芜湖", 1, "起飞"]); // 44岁的李四芜湖1
s3.hello.apply({ name: "小胡", age: 99 }, ["你是伞兵"]); // 99岁的小胡你是伞兵

空值合并操作符?? 参考资料

可以改变 this 指向的还有 callbindcall 的区别是可以传多个参数,bind 返回的值是新函数,需要再手动执行一次。

s3.hello.call(s1, "call", 2); // 22岁的张三call2
s3.hello.bind(s2, "bind", 3)(); // 44岁的李四bind3  返回的是新函数,需调用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值