手动调用匿名 JS 函数
Manually invoking anonymous JS function
我在CodePen上发现了很多生成JavaScript的五彩纸屑。它由一个简单的调用:
(function() {
// Confetti code here
}).call(this);
它工作得很好,但我希望在某个时候手动调用它。
我尝试将其放置在函数中,如下所示(删除上面的两个换行(:
function confetti() {
// Confetti code here
}
然后调用该函数,但什么也没发生。看不出为什么。有问题的代码可以在这里看到:http://codepen.io/linrock/pen/Amdhr
更新
看来我的代码被很好地触发了。它与它是一个匿名函数完全无关。出于某种原因,它只有在调整浏览器大小时才会复活——这完全是另一个问题。奇怪。
现在不知道这个问题该怎么做——这里的解决方案与实际问题无关。(所描述的问题从一开始就不存在:-/(
你很接近,你展示的尝试只是没有调用它;
function confetti() {
// pass
}
confetti.call(this);
但是,由于您想在其他地方使用它,我不会假设this
会是一样的,所以我会写
var confetti = (function () {
// pass
}).bind(this);
confetti();
您可以在此处阅读有关call
的文档,在此处阅读bind
允许您触发动画的函数称为 step
。你只需要从代码中删除它的调用。因此,与其拥有:
window.step = function() {
var c, j, len, results;
requestAnimationFrame(step);
context.clearRect(0, 0, w, h);
results = [];
for (j = 0, len = confetti.length; j < len; j++) {
c = confetti[j];
results.push(c.draw());
}
return results;
};
step();
你有
window.step = function() {
var c, j, len, results;
requestAnimationFrame(step);
context.clearRect(0, 0, w, h);
results = [];
for (j = 0, len = confetti.length; j < len; j++) {
c = confetti[j];
results.push(c.draw());
}
return results;
};
现在你只需要一些可以手动触发它的东西:
step();
相关文章:
- 当js函数's已执行
- 调用php数组中的JS函数
- 为JS函数添加延迟
- 我如何制作一个JS函数,它可以从相似的原始颜色双向更改为某个颜色
- 使用JS函数来使用另一个函数的语法?node.js
- 将JS函数传递给Emscripten生成的代码
- 是否可以在使用headerphp函数后自动调用JS函数
- 如何在.js函数中检索来自其他模板的表单的目标值
- 简单的JS函数.需要对变量进行澄清
- 无法识别从php创建的Js函数
- 如何将对象传递给这个js函数
- 全局窗口热键在最小化chrome窗口时调用js函数
- 将重定向URL链接添加到JS函数
- 从PHP调用JS函数不起作用
- js函数堆栈传入变量,.hide()不起作用
- 当运行JS函数时,如何在c#中的Edgejs中获取错误文本
- 如何让JS函数自行执行
- 使用默认js函数的javascript中的日期的第二天
- 如何从页面中的jquery调用angular js函数控制器
- 从.js文件调用html中的js函数