Operator void, to ciekawostka, którą warto poznać. Zobaczymy jak ona działa na przykładzie klasy Helper z poprzednich lekcji. Do dzieła.
Oto nasza klasa:
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();
}
return this;
}
toBold(){
let txt = this.item.textContent;
this.item.innerHTML = "<b>" + txt + "</b>";
return this;
}
incrementFS(unit='px', by=1){
let computed = getComputedStyle(this.item);
let fs = computed.getPropertyValue('font-size');
let fsNumber = parseInt(fs);
let newSize = `${fsNumber+by}${unit}`;
this.item.style.fontSize = newSize;
return this;
}
}
A to jej zastosowanie:
window.addEventListener("DOMContentLoaded", function(){
let para = new Helper('para');
para.toBold()
.toUpper()
.incrementFS()
.incrementFS()
.incrementFS();
});
Jak widać metody tej klasy zwracają this i można je chainować. Dokonajmy jednak zmiany w HTML:
<p id="para">bla bla bla</p>
<button id="btnIncrement">Increment Fontsize</button>
<button id="btnBold">Bold</button>
<button id="btnUpper">Uppercase</button>
Teraz złapmy nasze przyciski:
window.addEventListener("DOMContentLoaded", function(){
let para = new Helper('para');
let btnIncrement = document.getElementById('btnIncrement');
let btnBold = document.getElementById('btnBold');
let btnUpper = document.getElementById('btnBold');
});
Dodajmy tym przyciskom zdarzenie onclick:
window.addEventListener("DOMContentLoaded", function(){
let para = new Helper('para');
let btnIncrement = document.getElementById('btnIncrement');
let btnBold = document.getElementById('btnBold');
let btnUpper = document.getElementById('btnUpper');
btnIncrement.onclick = () => void para.incrementFS();
btnBold.onclick = () => void para.toBold();
btnUpper.onclick = () => void para.toUpper();
});
Void sprawa, że nic nie zostanie zwrócone. Inny przykład:
function getYear() {
return 2020;
};
console.log(getYear());
// Output: 2020
console.log(void getYear());
// Output: undefined
// Useful use case
button.onclick = () => void getYear();