我可以有这样的东西,其中函数返回一个 var 本身就是一个对 DOM 元素执行操作的函数吗?
var foo = function() {
var blah = function() {
document.getElementById('box').style.color="red";
};
return blah;
};
setTimeout(function() {
foo();
}, 2000);
<div id="box">This is some div</div>
编辑:
感谢您的所有提示,它确实按照您指出的那样工作。 一点后续... 我可以对返回的对象执行类似的操作吗?
var foo = function() {
var blah = function() {
document.getElementById('box').style.color="red";
};
var flop = function() {
document.getElementById('box').style.color="green";
};
return {
blah: blah,
flop: flop
};
};
var newInstance = foo();
setTimeout(function() {
newInstance.blah;
}, 2000);
setTimeout(function() {
newInstance.flop;
}, 4000);
<div id="box">This is some div</div>
最佳答案
是的,你可以做到。你的例子很接近。你想做的是:
setTimeout(function() {
var result = foo();
result();
}, 2000);
或更简洁地说:
setTimeout(function() {
foo()();
}, 2000);
内部 foo()
调用返回该函数,现在您需要通过将另一对括号粘贴到该结果上来调用该函数。
更新
此外,由于 setTimeout()
无论如何都需要一个函数作为第一个参数,因此您可以这样做:
setTimeout(foo(), 2000);
这样,您就可以调用返回函数的foo()
,并将该函数直接传递给setTimeout()
。你的脑子还晕吗? =)
关于javascript - 返回函数 var 的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20915061/