Нечто подобное может работать, но это сложно, метод toString()
объекта x
меняет свое внутреннее состояние при каждом вызове и возвращает его.Это происходит из-за неявного принуждения , которое вступает в силу при попытке привести x
к строке (будет использоваться метод toString()
объекта, если он найден).
let x = {
counter: 1,
toString: () => x.counter++
}
console.log('' + x);
console.log(`${x}`);
console.log(`${x}` != '' + x) // true
console.log(`${x}` !== '' + x) // true