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șteJSON.stringifysauconsole.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.