gpt4 book ai didi

javascript - 如何将参数绑定(bind)到回调?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:44:43 26 4
gpt4 key购买 nike

在 C++ 中,您有一个 bind 函数,它允许您将参数绑定(bind)到函数。当您调用该函数时,它将使用这些参数进行调用。类似地,MySQL 有能力将参数绑定(bind)到查询,它将用变量替换问号。在 Javascript 和 jQuery 中,bind 函数具有令人困惑的不同含义。它使传递的参数成为 this 变量,这根本不是我想要的。这是我想要实现的示例:

    var outerVariable;
var callbacks = [
some_object.event,
some_object.differentEvent.bind(outerVariable)
];
// func() will automatically have outerVariable in scope
$.map(callbacks, function(func) { func(); });

最佳答案

我认为不使用 this 就没有使用 bind 的简单方法,如果你只想绑定(bind)参数,你最好编写一个包装器

function bindArgs(fn) {
var slice = Array.prototype.slice,
bound_args = slice.call(arguments, 1);
return function () {
var args = slice.call(arguments, 0);
return fn.apply(this, bound_args.concat(args));
}
}

现在

function foo(a, b) {
console.log(this, a, b);
}
var bar = bindArgs(foo, 'bar');
var obj = {baz: bar};
obj.baz('baz'); // logs obj, "bar", "baz"

关于javascript - 如何将参数绑定(bind)到回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31437035/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com