我可以创建一个类来创建具有特殊上下文的对象吗? (如字符串或数字上下文)。
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是否可以实现类似的功能?