Когда объект обрабатывается как строка, среда выполнения JavaScript будет проверять, имеет ли он метод toString()
, и будет возвращать то, что указывает этот метод. Если нет toString()
, то обычно вы увидите [object Object]
. Кроме того, для создания базового примитива присвойте объекту значение valueOf
.
Кроме того, при создании объектов, которые будут использоваться таким образом, используйте функции конструктора, а не литералы объектов.
const objA = function(){ this.a= 'test1'; this.b= 'test2' }
let instA = new objA();
console.log(instA.toString());
const objB = function() {
this.a= 5;
this.b= 'test2';
this.toString= function(){ return this.a; };
this.valueOf = function() { return this.toString(); };
}
let instB = new objB();
console.log(instB.toString());
console.log(instB + 2); // Get the primitive and work with that