截至jQuery 1.9,a widget can inherit from itself。我無法找到一個真實的例子說明爲什麼這會有用,坦率地說,從自己身上繼承的想法打破了我的大腦。這個功能的目的是什麼?我可以使用這個功能做些什麼,我以前不能做,或者以前會更困難?爲什麼我需要一個jQuery UI Widget從自身繼承?
6
A
回答
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」對象。相反,包含的功能已經可用並在那裏工作。
2
原因是重新定義相同的小部件。所以,你增加了新的功能,不需要將它擴展到另一個對象中。
在鏈接給出的例子,你發:
$.widget("ui.dialog", $.ui.dialog, {
close: function() {
if (confirm("Is it closing time?")) {
this._super("close");
}
}
});
上面的代碼執行後,每個被創建,會彈出一個確認信息對話框,當用戶單擊關閉按鈕,如果他/他接受它,它會關閉。
1
這給了你類似於objective-c中類別的功能,你可以添加功能到類(widget),而不必改變類/小部件代碼本身,甚至可以訪問它的源代碼。
相關問題
- 1. 我爲什麼要繼承?
- 2. 爲什麼自定義RuntimeException需要直接從RuntimeException繼承?
- 3. 這個Kotlin對象爲什麼從它自身繼承?
- 4. jQuery UI:我需要什麼文件?
- 5. 爲什麼.ui-widget匹配.ui-widget .ui-widget
- 6. 爲什麼一類從結構繼承
- 7. 爲什麼QObject需要成爲多繼承情況下的第一個
- 8. 虛擬繼承(鑽石) - 做我爲什麼需要從最派生類
- 9. 的jQuery:需要「刷新」一個widget
- 10. 爲什麼我需要自我?
- 11. 當我想要創建一個新的fstream時繼承什麼?
- 12. 爲什麼'自我'需要成爲一個函數參數?
- 13. 需要從圖書館類繼承什麼樣的照顧?
- 14. 爲什麼繼承需要是「子類」NSObject?
- 15. 爲什麼代理類需要JavaScript ES5原型繼承?
- 16. 爲什麼代理模式需要繼承?
- 17. 爲什麼我需要我需要在子類中實現IDisposable()
- 18. 什麼是jquery noConflict,爲什麼我們需要這個?
- 19. 從單身模式繼承
- 20. 爲什麼「picker.delegate =自我需要」?
- 21. 爲什麼我需要一個需要實例的方法?
- 22. 爲什麼一個結構允許接口繼承,爲什麼一個類不能繼承
- 23. Bootstrap爲什麼需要jQuery?
- 24. 爲什麼需要$ = jQuery
- 25. 爲什麼我不能繼承datetime.date?
- 26. 爲什麼我不應該繼承UIButton?
- 27. 爲什麼我不能繼承IO.Directory?
- 28. 爲什麼我需要界面?
- 29. 從抽象類和具體類繼承有什麼區別?爲什麼我們需要後者?
- 30. 爲什麼我需要在模板繼承中使用範圍解析?
JavaScript沒有類;) – davidbuzatto
JavaScript也沒有繼承! :-) –
感謝您的回答。我缺少的關鍵是你可以在一個不同的源文件中爲一個特定的應用程序擴展一個共享的小部件。有點像C#中的部分類。現在完美。 – RationalGeek