Jestem pewien, że to definitywnie zostało odebrane przed, i starałem się go szukać .. może moje warunki wyszukiwania są błędne ...dowolnych metod i właściwości obiektów w JavaScript
Zasadniczo mam obiektu myObject
, i mam zestaw określonych właściwości i metod dla niego. Chcę tylko obsłużyć wywołania/odwołania do właściwości i metod, które nie zostały zdefiniowane.
Na przykład, powiedzmy, że mam to:
var myObject = {
someProperty : 'foobar',
someFunction : function() { /* Do stuff */ }
}
Obecnie, jeśli ktoś próbuje nawiązać połączenie z myObject.someOtherFunction()
, JavaScript wrzeszczy i krzyczy o tym. Chcę tylko skonfigurować sposób automatycznego obsługiwania tego. Na przykład, zamiast JavaScript rzucając błąd, mój obiekt po prostu zwraca false. czy to możliwe?
Innym sposobem na to patrzeć to:
var myObject = {
someFunction : function() { /* Do stuff */ }
magicBucket : function() { /* Do stuff */ }
}
Jeśli zadzwonię myObject.someFunction()
, dobrze, że jest zdefiniowany i coś robi. To, co chcę zrobić, to na przykład zadzwonić pod numer myObject.someOtherFunction()
, zamiast JavaScript rzucając błąd, zadzwoni on pod numer myObject.magicBucket()
.
Powodem jest to, że mam klienta, który korzysta z biblioteki strony trzeciej w swojej witrynie. Chcą zaprzestać używania go, ale całkowite usunięcie go zajmie dużo czasu i wysiłku. Tak więc, jako rozwiązanie krótkoterminowe, chcieli wiedzieć, czy mogę stworzyć plik dummy, który w zasadzie nic nie robi. Ta biblioteka używa kilku obiektów, które mają wiele metod. Mógłbym przejrzeć wszystko i zrobić obojętne obiekty, ale pomyślałem, że może być pewna łatwa metoda "catch-all", aby to zrobić.
Niektórzy wspomnieli, że sprawdzają, czy metoda istnieje najpierw, zawijając ją w warunek lub próbując ... catch itd. Chodzi o to, że w tej chwili nie mogę dotknąć faktycznych wywołań metod. A ponieważ ogólnym celem jest ostateczne całkowite usunięcie kodu, nie ma to nawet zastosowania.
Jest to dość nieregularny, mogę zapytać, dlaczego chcesz tę funkcję? – azz
Jeśli myślisz, że 'someOtherFunction' będzie albo' niezdefiniowanym' lub funkcją, możesz wykonać 'myObject.someOtherFunction? MyObject.someOtherFunction(): false', więc wywołujesz tylko' myObject.someOtherFunction' jeśli nie jest to "falsy" "value (' false' 'undefined',' null', '0'), lub wydaj 'false' jako wartość zastępczą. – apsillers
http://stackoverflow.com/questions/2527474/is-there-a-way-to-handle-unefined-functions-being-called-in-javascript –