如何将表达式传递给 JavaScript 函数
Posted
技术标签:
【中文标题】如何将表达式传递给 JavaScript 函数【英文标题】:How to pass an expression into JavaScript function 【发布时间】:2019-12-13 17:59:46 【问题描述】:我有 2 个类对象:let a, let b
,每个对象都有一个键“值”。
我希望能够创建第三个对象let c
并计算它的“值”键,如下所示:c.value = a.value + b.value
。
问题来了:
当a
或b
的值发生变化时,我需要let c
的值发生变化。 let c
可能是具有关键“依赖关系”的不同类,我在其中传递等式的参数,然后在每次 dependency.value
更改时更新 c.value
的函数。但是我仍然应该能够传递诸如“+”、“-”、“*”等符号。
代码示例:
class Data
name: string;
value: number;
constructor(name, value)
this.name = name;
this.value = value;
class Calc
name: string;
value: number;
dependencies: Array<object>;
constructor(name, dep)
this.name = name;
this.dependencies = dep;
let a = new Data('a', 10)
let b = new Data('a', 7)
let c = new Calc('c', [a, b])
而且我需要能够将像 c.value = a.value - b.value * d.value
这样的完整表达式传递给对象,以使其灵活。
如何在 javascript 中完成?提前谢谢你。
【问题讨论】:
您正在使用的代码的具体示例将大大阐明问题 猜测一下,Proxy 可能会有所帮助 - 尽管我不能 100% 确定您的最后陈述 - 如上所述,即使它必须是伪代码,更好地描述您的目标可能会有所帮助 可能类似于使c
成为一个类和value
一个getter,它会在您每次访问它时计算值。通常,不,您不能“将表达式分配给变量”。
看看How to Build Your Own Reactivity System
您可以查看 rxJs 的观察者模式。这样你可以监听值的变化并动态添加依赖
【参考方案1】:
我们可以通过以下方式将表达式作为参数传递给函数。
function calculation(expression)
if(expression == '+')
var output = 40 + 50;
else if(expression == '-')
var output = 40 - 50;
console.log(output);
calculation('+');
【讨论】:
以上是关于如何将表达式传递给 JavaScript 函数的主要内容,如果未能解决你的问题,请参考以下文章
如何将 JSF 托管 bean 属性传递给 JavaScript 函数?
Javascript:如何将其他变量传递给promise .catch函数