2012-08-24 9 views

Odpowiedz

1

Jak jest powiedziane in the slide you linked us, "jest to idealny sposób na rozszerzenie widżetów".

Teraz możesz rozszerzyć widget bez tworzenia nowego, "innego" obiektu widżetu ("inny", co oznacza "inne imię"). Możesz dodać funkcję i nadal używać tej samej nazwy obiektu widgetu.

// An incredibly contrived example 
$.widget("ui.dialog", $.ui.dialog, { 
    close: function() { 
    if (confirm("Is it closing time?")) { 
     this._super("close"); 
    } 
    } 
}); 

Jak widać na przykładzie, możemy dodać funkcję do obiektu dialogowym, które pojawi się w już istniejących oknach, to znaczy, że nie ma potrzeby tworzenia nowego „extendedDialog”, a następnie zmień istniejący kod, aby użyć obiektu "extendedDialog". Zamiast tego dołączona funkcjonalność będzie już dostępna i będzie działać.

+0

JavaScript nie ma klas;) – davidbuzatto

+0

JavaScript również nie dziedziczy! :-) –

+0

Dzięki za odpowiedź. Kluczowym elementem, którego mi brakowało, jest możliwość rozszerzenia udostępnionego widgetu w innym pliku źródłowym tylko dla określonej aplikacji. Coś jak częściowe klasy w C#. Teraz ma to sens. – RationalGeek

2

Powodem jest przedefiniowanie tego samego widżetu. Dodajesz do tego nowe możliwości, nie musisz rozszerzać go na inny obiekt.

W przykładzie przedstawionym w linku, który wysłał:

$.widget("ui.dialog", $.ui.dialog, { 
    close: function() { 
     if (confirm("Is it closing time?")) { 
      this._super("close"); 
     } 
    } 
}); 

Po wykonaniu powyższego kodu, każdy dialog, który jest tworzony pojawi się komunikat potwierdzenia, gdy użytkownik kliknie w przycisk zamknięcia i jeżeli on/on to akceptuje, to się zamknie.

1

Daje to możliwości podobne do kategorii obiektywu-c, można dodać funkcjonalność do klasy (widgetu) bez konieczności zmiany samego kodu klasy/widżetu, lub nawet mieć dostęp do jego źródła.