Uczymy się czym jest nodeType i firstChild na przykładzie klasy, którą później rozbudujemy. Do dzieła.

Oto nasza klasa:

class Helper {
    constructor(selector) {
        this.item = document.getElementById(selector);
      }
    
    toUpper(){
        
        let txt = this.item.textContent;
        this.item.textContent = txt.toUpperCase();
    }

    toBold(){
        let txt = this.item.textContent;
        this.item.innerHTML = "<b>" + txt + "</b>";
    }
    
}

Nie wygląda na przesadnie trudną. Oto użycie:

window.addEventListener("DOMContentLoaded", function(){

    let para = new Helper('para');

    console.log(para.item.innerHTML);
    //bla bla bla

    para.toUpper();
    para.toBold();

    console.log(para.item.innerHTML);
    //<b>BLA BLA BLA</b>
    
   
});

Teraz wykonajmy nasze funkcje na odwrót:

window.addEventListener("DOMContentLoaded", function(){

    let para = new Helper('para');

    console.log(para.item.innerHTML);
    //bla bla bla

    para.toBold();
    para.toUpper();
    
    console.log(para.item.innerHTML);
    //BLA BLA BLA
    
});

Bold nam zniknął. Cóż, zróbmy taki test:

window.addEventListener("DOMContentLoaded", function(){

    let para = new Helper('para');

    console.log(para.item.innerHTML);
    //bla bla bla
    console.log(para.item.firstChild.nodeType === Node.TEXT_NODE);
    //true

    para.toBold();
    //para.toUpper();
    
    console.log(para.item.innerHTML);
    //<b>bla bla bla</b>
    console.log(para.item.firstChild.nodeType === Node.TEXT_NODE);
    //false
    
});

Wystarczy teraz zmienić nieco naszą klasę:

class Helper {
    constructor(selector) {
        this.item = document.getElementById(selector);
      }
    
    toUpper(){
        
        let txt = this.item.textContent;
        
        if(this.item.firstChild.nodeType === Node.TEXT_NODE){
            this.item.textContent = txt.toUpperCase();
        }else {
            this.item.firstChild.textContent = txt.toUpperCase();
        }
    }

    toBold(){
        let txt = this.item.textContent;
        this.item.innerHTML = "<b>" + txt + "</b>";
    }

}

Teraz wszystko będzie działać bez zarzutu:

window.addEventListener("DOMContentLoaded", function(){

    let para = new Helper('para');

    console.log(para.item.innerHTML);
    //bla bla bla

    para.toBold();
    para.toUpper();
    
    console.log(para.item.innerHTML);
    //<b>BLA BLA BLA</b>
   
});