Преобразование объекта в примитив в Javascript: пожалуйста, почему не вызывается метод valueOf (), поскольку нет метода toString () - PullRequest
1 голос
/ 29 марта 2020

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

alert(obj);

Я думал, что в отсутствие toString () valueOf () будет вызываться, когда ожидается строка.

1 Ответ

2 голосов
/ 29 марта 2020

Это не вызывает, потому что это найти toString в цепочке прототипов, если мы создадим объект без какого-либо прототипа, он будет вызывать

let obj = Object.create(null)

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

alert(obj);
...