call(), apply(), bind()

本文介绍JavaScript中call、apply及bind方法的区别与使用。这些方法均可改变函数内部this的指向,但调用方式与是否立即执行有所不同。通过实例演示了如何利用这些方法灵活控制函数上下文。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

call, apply, bind

    // 共同点: 都可以修改this指向

    // 区别1: call和apply的参数形式不一样
    // 区别2: bind和call, apply,bind在修改this指向的时候不会调用函数,而call和apply会调用函数

代码验证1:

    // let obj = {
    //     uname: '张三'
    // }
    // function fn(age, myheight){
    //     console.log(this, age, myheight);
    // }
    //仅代表调用fn这个函数,并没有修改this指向
    // fn.call();
    //代表修改this指向,并调用函数
    // fn.call(obj, 20);

    //仅代表调用fn这个函数,并没有修改this指向
    // fn.apply();

    // 代表修改this指向,并调用函数,
    // 后面的参数必须是以数组的形式传递
    // fn.apply(obj, [20, 180]);

代码验证2:

     let obj = {
        uname: '张三'
     }

     function fn(age) {
        console.log(this, age);
     }

     //bind不会调用函数
     //是有返回值,返回的就是当前这个函数
    //  let res = fn.bind();
    //  res();


     //修改this指向,传递参数
     let res = fn.bind(obj, 20);
     res();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值