gpt4 book ai didi

javascript - 如何将逻辑/数学运算符分配给对象的函数?

转载 作者:行者123 更新时间:2023-12-03 06:02:42 24 4
gpt4 key购买 nike

所以我正在 JavaScript 中制作一个表达式解析器,并想知道:是否有任何方法可以将对象的函数分配给逻辑/数学运算符,以便每次在该对象上使用该运算符时都会调用它?

我知道,例如,每当您尝试将对象连接到字符串时,它都会自动调用该对象的 .toString() 方法。

例如,假设您有带有 this.number 属性的对象。我希望能够执行以下操作:

function MyObject(number) {
this.number = number;
}

var obj1 = new MyObject(2);
var obj2 = new MyObject(3);

obj1 *= obj2;
obj2 *= 3;

obj1.number; // Would return 6.
obj2.number; // Would return 9.

在这种情况下,我会重写 *= 运算符,以便每次调用它为 MyObject 实例赋值时,它都会乘以该实例的 this.number 值除以其右侧的值(原始数字值或其他实例的 this.number 值)。

有什么办法可以实现这一点吗?

任何帮助都会很棒!

谢谢:-)

最佳答案

您可以创建一个 .valueOf() 函数来返回数值。运行时将在类似于决定调用 .toString() 的情况下调用该函数 - 即,当它想要将对象强制为数值时。

但是,您不能强制运行时特殊处理分配,因此您不能这样做

obj1 *= obj2;

工作。您可以做的最好的事情(使用 .valueOf() 实现)是:

obj1.number = obj1 * obj2;

.valueOf() 可能类似于:

MyObject.prototype = {
valueOf: function() { return this.number; }
};

关于javascript - 如何将逻辑/数学运算符分配给对象的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39688870/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com