变量运算符可能吗?
|
有没有一种方法可以执行以下任一操作:
var1 = 10; var2 = 20;
var operator = \"<\";
console.log(var1 operator var2); // returns true
- 要么 -
var1 = 10; var2 = 20;
var operator = \"+\";
total = var1 operator var2; // total === 30
没有找到相关结果
已邀请:
6 个回复
怪酞撩匹
您可以使用诸如ѭ3之类的基于ascii的名称,以避免在不需要时使用字符串。但是,有人问了与此类似的问题的一半,因为有人用字符串表示运算符并希望从中获取功能。
窝头菊
屉杆绊
函数,但这不是一个好主意。 我认为更好的方法是像这样为您的操作员编写函数:
臀博
这样,我们可以使用动态运算符评估。
朗排谎纷瘟
输出:
此时,您将拥有所有输入和操作,因此其余部分是操作的结果。该操作的接收者将获得一个原始值,可以是字符串或数字,您不能阻止这种情况。如果它不是一个任意接收者,比如说您的运算符已重载该类的实例,则可以处理各种get / set陷阱来拦截传入的值/防止覆盖。您可以将操作数和操作存储在某个中央查询中,并使用一种简单的方法将原始值追溯到产生该值的操作,然后创建要进行自定义操作的任何逻辑。另一种允许任意接收者随后可以重构为复杂形式的方法是将数据编码为原始值,以便可以将其反向转换为复杂类。就像说,可以将3个不同的8位整数(255,255,255)的RGB值在get端转换为单个数字,而接收器端可以将其转换回复杂的分量。或者,对于更复杂的数据,您甚至可以返回JSON序列化的字符串。 可以访问Harmony Proxies(Firefox6 +,带标志的Nodejs)使整个过程变得非常容易,因为您可以在几乎所有内容上创建陷阱代理,并从头到尾进行整个过程的内省,并做您想做的任何事情。您的数据/类的操作数实例,内部引擎可以访问的每个可能值的valueOf / toString / getters,任何您事先知道的接收器对象,甚至在情况为ѭ10时都捕获任意接收器
晤默报