2012-08-24 50 views

回答

1

就像說的是in the slide you linked us,「這是擴展小部件的理想方式」。

現在,您可以在不創建新的「不同」小部件對象(「不同」意思是「別名」)的情況下擴展小部件。您可以添加功能並仍使用相同的窗口小部件對象名稱。

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

正如我們所看到的例子,我們可以添加一個功能對話框對象,這將出現在已經存在的對話,也就是說,你並不需要創建一個新的「extendedDialog」,然後更改現有代碼以使用「extendedDialog」對象。相反,包含的功能已經可用並在那裏工作。

+0

JavaScript沒有類;) – davidbuzatto

+0

JavaScript也沒有繼承! :-) –

+0

感謝您的回答。我缺少的關鍵是你可以在一個不同的源文件中爲一個特定的應用程序擴展一個共享的小部件。有點像C#中的部分類。現在完美。 – RationalGeek

2

原因是重新定義相同的小部件。所以,你增加了新的功能,不需要將它擴展到另一個對象中。

在鏈接給出的例子,你發:

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

上面的代碼執行後,每個被創建,會彈出一個確認信息對話框,當用戶單擊關閉按鈕,如果他/他接受它,它會關閉。

1

這給了你類似於objective-c中類別的功能,你可以添加功能到類(widget),而不必改變類/小部件代碼本身,甚至可以訪問它的源代碼。

相關問題