Kuidas toimub objekti teisendamine stringiks kasutatavas programmeerimiskeeles?
sobes.tech AI
Vastus AI-lt
Objekti konvertešana stringiks JavaScriptis toimub järgmiselt:
-
Koheselt konverteerimine: JavaScript automaatselt konverteerib objekti stringiks, kasutades stringi operaatorit või kontekstides, mis ootavad stringi (näiteks
alert(), stringi interpolatsioon tagurpidi lainetega ``). Sel juhul kutsutakse objektitoString()meetod, ja kui seda pole või see tagastab mitte-primitiivse väärtuse, kutsutaksevalueOf(). -
Selge konverteerimine:
toString()meetod: kutsutakse objekti stringivormingu saamiseks.String()funktsioon: selgelt konverteerib väärtuse stringiks.- Tühi stringi ühendamise operaator (
"" + objekt): samuti algatab mitte-primitiivse konverteerimise.
Objekti konverteerimisel stringiks on vaikimisi meetodite kutsumise järjekord: toString() -> valueOf(). Kui toString() tagastab primitiivse väärtuse, kasutatakse seda. Kui mitte, või toString() puudub, kutsutakse valueOf(). Kui ka valueOf() ei taga primitiivset väärtust, visatakse TypeError viga.
// Objekti oma `toString` ja `valueOf` meetoditega
const myObject = {
name: 'test',
value: 123,
toString: function() {
return `Object(${this.name})`;
},
valueOf: function() {
return this.value;
}
};
// Mitte-primitiivse konverteerimise (kutsutakse `toString`)
console.log(`Objekt stringina: ${myObject}`); // Tulem: Objekt stringina: Object(test)
// Selge konverteerimine `String()` abil (kutsutakse `toString`)
console.log(String(myObject)); // Tulem: Object(test)
// Konverteerimine `toString()` abil
console.log(myObject.toString()); // Tulem: Object(test)
// Näide, kui kutsutakse `valueOf`
const anotherObject = {
value: 456,
valueOf: function() {
return this.value;
}
};
console.log(String(anotherObject)); // Tulem: 456 (sest `valueOf` tagastas primitiivse)
// Tavaline objekt ilma üle kirjutamata meetoditeta
const standardObject = {};
console.log(String(standardObject)); // Tulem: [object Object]
JSON.stringify() kasutatakse objektide konverteerimiseks JSON-stringiks, mis töötab oma reeglite järgi, ignoreerib toString() ja valueOf() ning serialiseerib ainult loetavaid omadusi.