2010-08-08 66 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