2010-08-08 67 views
5

任何人都可以指向一些真實世界的面向對象的JavaScript的正確方向嗎?我從幾本書中學習JavaScript的OO,但是這些書中給出的所有例子都歸結爲從動物原型或類似物繼承的狗對象。我真的很想看到更多的東西。OO JS的好例子?

我看過jQuery和類似的庫(基礎,原型),但我認爲它們是詳細的例子。我正在尋找一個腳本,我可以清楚地看到使用中的繼承(古典或protoypal)。

回答

5

好的「真實世界」的例子來學習OO JavaScript實際上是研究一些JavaScript框架。他們中的一些支持和自己的框架代碼中使用OO:

這些提供了重要的參考和寫作OO JavaScript的各種策略。

+0

嗨,感謝您的回覆。剛剛下載的YUI和查看jQuery庫代碼相比,它非常清楚庫的工作方式......我可以在那裏看到繼承的Crockfords object()函數 – 2010-08-08 17:17:39

+0

@elduderino我從YUI中學到了很多,太。所有這些框架都非常適合在JavaScript中學習一些整潔的技巧!而道格Corckford在javascript上的鏈接是黃金! – naikus 2010-08-08 17:27:44

+0

+1:這真是個好建議。我現在正在學習Javascript OO,並下載了所有上述內容以用作參考庫。 – 2011-07-11 01:51:43

2

IMO,javascript的原型thingie是非常有用的,而經典的OOP是沒有必要的。

作爲一個真實世界的例子,請考慮google maps v3 api。讓我們實現一個新的OverlayView的:

 
// implement an OverlayView // 
MyOverlay.prototype = new google.maps.OverlayView();

// the "constructor" function // function MyOverlay(position, node, map) { // set the parameters // this.position = position; this.node = node; this.map = map; this.setMap(this.map); }

// required onAdd function // MyOverlay.prototype.onAdd = function() { // observe the getPanes function inherited from OverlayView // var panes = this.getPanes(); // bla bla // }

// required draw function // MyOverlay.prototype.draw = function() { // bla bla // } // .. other functions //

// now instantiate an object // var instance = new MyOverlay(position, node, map);

如果這並不爲你工作,許多外部庫(例如原型,道場,jQuery的,等等)提供經典的OOP偉大的解決方案。

+0

是的,這對我很有用。概念原型,僞古典和原型對我來說都很清楚,但是我只是在看到如何將它引入到我自己的代碼中時遇到問題。 – 2010-08-08 17:19:16