在JavaScript中覆盖赋值运算符?

时间:2018-05-16 16:41:51

标签: javascript

好的,所以我遇到了很多关于JavaScript Number和C#decimal的问题,彼此并不是特别好,所以我决定制作一个更复杂的中间噱头:< / p>

class Decimal {
    constructor(value, decimalPlaces = 2) {
        this.value = value;
        this.decimalPlaces = decimalPlaces;
    }

    valueOf() {
        let pow = Math.pow(10, this.decimalPlaces);
        let retv = Math.round(this.value * pow) / pow;
        return retv;
    }

    toString() {
        return this.value.toFixed(this.decimalPlaces);
    }

    toJSON() {
      return this.valueOf();
    }
}

所以我可以

let price = new Decimal(200 - 199.99, 2)

它工作正常,即使在序列化时:

let foo = { price: price; }

这将序列化为

{ price: 0.01 }

正如所料。

这里的问题是

如果我们执行price = 10price = someNumberVariable,我们将失去此类的全能舍入权力,因为现在价格是数字类型。

问题是

是否有可能覆盖赋值运算符,以便用户代码上的price = someNumberValue;实际上price.value = someNumberValue在引擎盖下,以保持自动舍入魔法的继续? 或者甚至更好,是否有任何原生的javascript东西以我更容易的方式做我想要的事情,我可能碰巧不知道?

0 个答案:

没有答案