Javascript 中的对象到原始类型的转换:请问为什么不调用 valueOf() 方法,因为没有 toString() 方法

Object to primitive conversion in Javascript: Please why isn't the valueOf() method called since there is not toString() method

let obj = {
  valueOf() {
    return "2";
  }
};

alert(obj);

我认为在没有 toString() 的情况下, valueOf() 将在需要字符串时被调用。

这不会调用,因为它在原型链中找到 toString,如果我们创建一个没有任何原型的对象,它将调用

let obj = Object.create(null)

obj.valueOf =
  function() {
    return "2";
  }

alert(obj);