JavaScript - 向回调函数中传递(绑定)this及其他参数

本文深入探讨了JavaScript中Function.prototype.bind()方法的使用,包括其语法、如何与setTimeout结合使用来控制按钮状态,以及如何预设参数。通过具体示例展示了bind()方法的强大功能。

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



主要参考


Function.prototype.bind()

  • 语法:

    fun.bind(thisArg[, arg1[, arg2[, ...])
  • 描述:

    创建一个与被调函数具有相同函数体的新函数(绑定函数)

    • 新函数的 this 绑定到 bind() 的第一个参数 thisArg;
    • bind() 也接受将预设参数 arg1、arg2、... 提供给原函数

应用示例:配合 setTimeout

  • 场景描述:

    点击按钮,通过绑定的 this 对象控制按钮等待状态,并延迟 2s 后修改当前按钮字面值为新获取到的参数列表

  • 代码示例:

    var button = document.getElementById('BIND_FUNCTION');
    button.addEventListener('tap', function() {
        mui(this).button('loading');
        setTimeout(function() {
            mui(this).button('reset');
            mui(this)[0].innerText = Array.prototype.slice.call(arguments);
        }.bind(this, 50, 100, 200), 2000);
    });

预设参数将插入到目标函数的参数列表开始位置

  • 代码示例:

    function list() {
        return Array.prototype.slice.call(arguments);
    }
    
    var list1 = list(1, 2, 3); // [1, 2, 3]
    
    // 创建一个list的绑定函数newList,并插入一个预设参数37
    var newList = list.bind(undefined, 37);
    
    var list2 = newList(1, 2, 3); // [37, 1, 2, 3]    

转载于:https://www.cnblogs.com/JustBeZero/p/9407573.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值