Sobes.tech
Junior

İ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, obyektin toString() 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()valueOf()-u nəzərə almır və yalnız sayılabilən xüsusiyyətləri serializə edir.