MST

星途 面试题库

面试题:JavaScript 中的强制类型转换与隐式转换:自定义类型处理

自定义两个 JavaScript 类 A 和 B ,要求在使用 == 操作符比较 A 和 B 的实例时,通过合理的强制类型转换与隐式转换机制,能够实现特定的比较逻辑(例如基于某个内部属性值进行比较),请写出完整的类定义以及比较的代码,并解释类型转换过程。
14.7万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
class A {
    constructor(value) {
        this.value = value;
    }
    valueOf() {
        return this.value;
    }
}

class B {
    constructor(value) {
        this.value = value;
    }
    valueOf() {
        return this.value;
    }
}

// 比较代码
const a = new A(5);
const b = new B(5);
console.log(a == b); 

类型转换过程解释

  1. == 操作符规则:当使用 == 操作符比较两个对象时,如果两个操作数都不是基本类型,JavaScript 会尝试通过调用对象的 valueOftoString 方法将其转换为基本类型。
  2. 自定义 valueOf 方法:在 AB 类中,我们都定义了 valueOf 方法,它会返回实例的 value 属性值。这样在进行 a == b 比较时,JavaScript 调用 a.valueOf()b.valueOf() 方法,将 ab 转换为基本类型(数字 5)。
  3. 最终比较:由于两个操作数都被转换为了基本类型数字 5,此时进行数字之间的比较,5 == 5 返回 true