在 JavaScript 中,如何让两个类的实例相加可以得到一个数字?

大胡子民工潘半仙
  • 4.7k

给出下面这样的一个类:

class AnObject {
  constructor(number) {
    this.number = number;
  }
}

如何像下面的结果成立?

const a = new AnObject(1);
const b = new AnObject(2);

a + b === 1 + 2
回复
阅读 431
4 个回答

在考察类型转换:

对象转成基本类型(ToPrimitive)先调用valueOf方法,没有定义该方法的调用toString方法

参考JS-相等性判断

class AnObject {
  constructor(number) {
    this.number = number;
  }
  valueOf() {return this.number}
}
Litchi
  • 4
新手上路,请多包涵

加valueOf或者toString方法

蜗牛
  • 5
新手上路,请多包涵
class AnObject {
    constructor(number) {
        this.number = number;
    }

   // 实例做运算的时候会做类型转换,会调用toString/valueOf方法
    // valueOf() {
    //     return this.number
    // } 

    toString() {
        return this.number
    }
}

const a = new AnObject(1);
const b = new AnObject(2);
你知道吗?

宣传栏