Object() / toString / valueOf în JavaScript

Obiecte Toate browserele, Node.js

Metodele pe care JavaScript le apelează automat când transformă un obiect în text sau în număr.

Sintaxă
obiect.toString()
obiect.valueOf()
obiect.toLocaleString()
Object(valoare)

Ce face Object() / toString / valueOf

Când un obiect este lipit de un text, JavaScript apelează toString(); când este folosit într-un calcul, apelează întâi valueOf(). Implicit, toString returnează "[object Object]", iar valueOf returnează obiectul însuși. Le poți suprascrie în obiectele sau clasele tale.

Object.prototype.toString.call(x) returnează tipul intern: [object Array], [object Date], [object Null]. toLocaleString apelează implicit toString. Funcția Object(valoare) transformă o valoare simplă în obiectul corespunzător și lasă obiectele neschimbate.

Ce returnează

toString: text. valueOf: valoarea simplă (implicit obiectul).

Exemple

Exemplul 1: Conversiile implicite

const obiect = { a: 1 };

console.log(String(obiect));
console.log(`${obiect}`);
console.log(Object.prototype.toString.call([]), Object.prototype.toString.call(null));
console.log(Object.prototype.toString.call(new Date(0)));

Rezultat

[object Object]
[object Object]
[object Array] [object Null]
[object Date]

Exemplul 2: toString și valueOf personalizate

class Bani {
  constructor(lei) { this.lei = lei; }
  toString() { return `${this.lei.toFixed(2)} lei`; }
  valueOf() { return this.lei; }
}

const pret = new Bani(49.9);
console.log(`Total: ${pret}`);
console.log(pret * 2);
console.log(pret > 40);

Rezultat

Total: 49.90 lei
99.8
true

Exemplul 3: Funcția Object()

const obiect = { x: 1 };

console.log(typeof Object(5), Object(5) instanceof Number);
console.log(Object(obiect) === obiect);
console.log(Object(null));

Rezultat

object true
true
{}

Greșeli frecvente

  • Afișezi un obiect lipit de text ("Date: " + obiect) și primești [object Object]. Folosește JSON.stringify sau console.log("Date:", obiect).

Comenzi înrudite

  • String() / toString: Transformă orice valoare în text: numere, valori logice, tablouri, null și undefined.
  • JSON.stringify: Transformă un obiect sau tablou JavaScript în text JSON.
  • typeof: Returnează tipul unei valori ca text: „string”, „number”, „boolean”, „object” etc.