İstifadə etdiyiniz proqramlaşdırma dilində obyektin sətirə çevrilməsi necə baş verir?
sobes.tech Süni İntellekt
AI-dan cavab
JavaScript-də obyektin sətirə çevrilməsi aşağıdakı üsullarla həyata keçirilir:
-
Qeyri-müəyyən çevirmə: JavaScript avtomatik olaraq obyektin sətirə çevrilməsini həyata keçirir, sətir operatorlarından istifadə edildikdə və ya sətir gözləyən kontekstlərdə (məsələn,
alert(), arxa tırnaklar `` ilə sətir interpolasiyası)toString()metodunu çağırır. Bu halda, obyektintoString()metodu çağırılır və əgər mövcud deyilsə və ya qeyri-primitiv dəyər qaytarırsa,valueOf()çağırılır. -
Açıq çevirmə:
toString()metodu: obyektin sətir nümayişini almaq üçün çağırılır.String()funksiyası: dəyəri açıq şəkildə sətirə çevirir.- Boş sətir ilə birləşdirmə operatoru (
"" + obyekt): həmçinin qeyri-müəyyən çevirməni başlatır.
Obyektin sətirə çevrilməsində, standart çağırış ardıcıllığı: toString() -> valueOf(). Əgər toString() primitiv dəyər qaytarırsa, o istifadə olunur. Əks halda və ya toString() mövcud deyilsə, valueOf() çağırılır. Əgər valueOf() də primitiv olmayan dəyər qaytarırsa, TypeError xətası atılır.
// Öz `toString` və `valueOf` metodlarına malik obyekt
const myObject = {
name: 'test',
value: 123,
toString: function() {
return `Object(${this.name})`;
},
valueOf: function() {
return this.value;
}
};
// Qeyri-müəyyən çevirmə (`toString()` çağırılır)
console.log(`Obyekt kimi sətir: ${myObject}`); // Nəticə: Obyekt kimi sətir: Object(test)
// Açıq çevirmə String() ilə (`toString()` çağırılır)
console.log(String(myObject)); // Nəticə: Object(test)
// `toString()` ilə çevirmə
console.log(myObject.toString()); // Nəticə: Object(test)
// `valueOf()` çağırıldığı nümunə
const anotherObject = {
value: 456,
valueOf: function() {
return this.value;
}
};
console.log(String(anotherObject)); // Nəticə: 456 (çünki `valueOf()` primitiv qaytardı)
// Standart obyekt, üstündə metodlar yazılmayıb
const standardObject = {};
console.log(String(standardObject)); // Nəticə: [object Object]
Obyektlərin JSON-ə çevrilməsi üçün JSON.stringify() istifadə olunur, bu öz qaydalarına görə işləyir, toString() və valueOf()-u nəzərə almır və yalnız sayılabilən xüsusiyyətləri serializə edir.