我希望我能正确地问这个。
我有jQuery行:
runFunction
并且工作正常。但现在我想将一个变量传递给函数$("main").load("link.html", runFunction(myvar));
,但是要做
$("main").load("link.html", function() {runFunction(myvar)});
不起作用,因为它正在被立即调用。我知道我能做到
var a = [1, 2, 3]
var b = a
b.append(4) //1, 2, 3, 4
a //1, 2, 3
但是我想知道是否有其他方法可以将变量发送到runFunction而没有额外的包装函数。
答案 0 :(得分:2)
在幕后,创建一个新函数是不可避免的,因为你传入的“bound”参数绑定到某个范围,你将调用的函数将在不同的范围。要实现这一点,您需要一个闭包,您可以使用内联匿名函数创建它。
也就是说,JavaScript通过Function.prototype.bind
调用使这变得更容易。查看bind()
on MDN。
bind
允许您创建前导绑定参数(即,您不能使用它将第二个参数绑定到变量而不是第一个)。
$("main").load("link.html", function() {runFunction(myvar)});
变为
$("main").load("link.html", runFunction.bind(window, myvar)});
请注意,传递给bind
的第一个参数是thisArg
,它是JavaScript对象,它将与函数体中的this
参数关联。