为自定义类创建上下文

时间:2019-07-24 11:48:43

标签: javascript types

我可以创建一个类来创建具有特殊上下文的对象吗? (如字符串或数字上下文)。

class Unit extends Number {
  constructor(value, symbol) {
    super(value)
    this.symbol = symbol
  }

  valueOf() {
    return parseFloat(this.toPrecision(2))
  }

  toString() {
    return `${this.valueOf()} ${this.symbol}`
  }
}

let meter = new Unit(1, 'm')

console.log('example of number context that uses valueOf()')
console.log(Number(meter)) // Number(1)
console.log(1 + meter) // Number(2)
console.log(2 * meter) // Number(2)

console.log('example of string context that uses toString()')
console.log(String(meter)) // String('1 m')
console.log(`string: ${meter}`) // String('string: 1 m')

console.log(`and what I'm trying to do (Unit context), but instead it works like number context`)
console.log(meter + 1) // Unit(2, 'm')
const square_meter = meter * meter
console.log(square_meter) // Unit(1, 'm2')
console.log(square_meter / meter) // Unit(1, 'm')

因此,我想做的是检查类Unit的对象是否与另一个单元,数字或字符串的运算符(以及哪个运算符)一起使用,并根据该运算符产生不同的结果。

我的问题是,JavaScript是否可以实现类似的功能?

0 个答案:

没有答案