如何在函数链中有条件地调用函数
How can I call functions conditionally in function chaining?
我不知道它叫什么,但是在我使用的画布库中,您可以通过调用将过滤器应用于纹理
canvas.draw(texture).filter1().filter2().filter3().filter4();
而且如果值不是默认值,我尝试只绘制某些过滤器,但我无法使用常规 if 语句来执行此操作,因为纹理只能设置一次,如果我尝试再次设置它,以前的过滤器将被重置。
我想知道的是我是否可以以某种方式将"if"语句添加到过滤器的"火车"中,如下所示:
canvas.draw(texture).if(something){filter1()}.if(somethingelse){filter2()}.if(something){filter3()};
等等。
对不起,如果我不是很清楚,我不知道过滤器"火车"叫什么,你在一行上相互应用过滤器。
您在
问题中显示的结构称为函数链。函数filter1
, filter2
, ... filterN
只会修改相同的画布对象,并在函数末尾返回相同的对象。
你可以很好地包括if
条件,比如这样
var canvasObject = canvas.draw(texture);
if (condition1) {
canvasObject = canvasObject.filter1();
}
if (condition2) {
canvasObject = canvasObject.filter2();
}
...
一个简单的例子,看起来像这样
function Canvas() {
actualCanvas = "";
return {
filter1: function() {
actualCanvas += "filter1 ";
return this; // return the same object
},
filter2: function() {
actualCanvas += "filter2 ";
return this; // return the same object
},
filter3: function() {
actualCanvas += "filter3 ";
return this; // return the same object
},
getActualCanvas: function() {
return actualCanvas;
}
}
}
并调用函数,如下所示
var canvasObject = new Canvas();
if (1 === 1) {
canvasObject = canvasObject.filter1();
}
if (1 !== 1) {
canvasObject = canvasObject.filter2();
}
if (2 === 2) {
canvasObject = canvasObject.filter3();
}
console.log(canvasObject.getActualCanvas());
// filter1 filter3
console.log(new Canvas().filter1().filter2().filter3().getActualCanvas());
// filter1 filter2 filter3
相关文章:
- 通过js在新选项卡中有条件地打开url
- jQuery-有条件地附加HTML
- 有条件更新d3.js力图中节点的最佳方法
- Woocommerce产品选项有条件
- 有条件地在选项标记中应用布尔属性
- ADF:有条件地加载javascript资源
- 如何有条件地更改角度中的orderBy参数
- 无法在有条件呈现的富:面板上提交h:form
- 有条件地运行javascript函数-Razor,HTML
- 如何使用图表包装函数有条件地格式化谷歌可视化表单元格
- 使用PHP在浏览器中有条件地呈现Javascript函数调用
- 如何在 javascript 中有条件地定义一个函数
- Javascript 覆盖相同的命名函数,尽管在 Chrome 中有条件
- 如何在函数链中有条件地调用函数
- 执行javascript/jquery代码OnClick并有条件地发布回ASP函数
- JavaScript-有条件地调用函数
- D3.js -有条件地对数组元素应用nest.key()函数
- 如果变量存在,则有条件地调用函数或脚本
- 在for循环中的异步函数调用中有条件地执行回调
- 将有条件的spring MVC参数传入javascript url函数