Nowoczesne Javascript na ratunek!
Może nie być to wielka szansa na zobaczenie z długą listą odpowiedzi, ale jest to teraz rozwiązane * na poziomie języka dzięki nowej składni Opcjonalnego Łączenia
me.onChange?.(str)
To takie proste - onChangewywoływane jest tylko wtedy, gdy istnieje .
Jeśli onChangenie istnieje, nic się nie dzieje, a wyrażenie powraca undefined- więc jeśli ma wartość zwracaną, której w innym przypadku użyłbyś, możesz po prostu sprawdzić tę wartość !== undefinedprzed kontynuowaniem.
Krawędź przypadek zastrzeżenie - jeśli onChange nie istnieje, ale to nie funkcja, to dostać TypeError. Jest to, jak można się spodziewać, to tak samo, jak próba wywołania dowolnej niefunkcji jako funkcji, ale warto wyraźnie zaznaczyć, że Opcjonalne Łączenie łańcuchów nie robi żadnej magii, aby to zniknęło.
* Cóż, technicznie rzecz biorąc Opcjonalne Łączenie jest nadal propozycją TC39 etapu 4, więc nie jest jeszcze w specyfikacji ECMAScript, ale etap 4 oznacza, że jest sfinalizowany, a jego włączenie jest zasadniczo gwarantowane, po prostu czeka na nową wersję. Możesz użyć składni w jej ostatecznej wersji już dziś przez Babel, mając pewność, że się nie zmieni. Jest nawet w maszynopisie!