Funkcje rozszerzające są wywoływane statycznie na podstawie typu kompilacyjnego, a nie runtime. Nie nadpisują metod członkowskich. Typowy haczyk: wywołanie rozszerzenia na zmiennej o typie bazowym nie uruchomi rozszerzenia z typu pochodnego.
Rozwinięcie krótkiej odpowiedzi — co zwykle ma znaczenie w praktyce:
Krótki przykład (szablon do wyjaśniania):
// Example: discuss trade-offs for "funkcje-rozszerzające:-jak-są-wywoływane-i-jaki-"
function explain() {
// Start from the core idea:
// Funkcje rozszerzające są wywoływane statycznie na podstawie typu kompilacyjnego, a nie run
}