|  |      1otakustay      2014-03-06 16:12:02 +08:00 5万行以上js组成的系统,页面可以分类,通用性很大(比如用户列表、书列表、借阅列表、列表列表列表表单表单表单)…… | 
|  |      2hkongm      2014-03-06 16:37:57 +08:00  1 个人看法:JS这几年太强调OO了,不适合JS本身。 只要能完成需求,出产品,无所谓是否OO。别跟自己过不去 | 
|  |      4FrankFang128      2014-03-06 17:05:24 +08:00 一般不用继承,用构造函数加属性就好了。 不要在写 JS 的时候想着 Java,身在曹营心在汉! JS 是面向对象,Java 是面向类,理念不同。 | 
|  |      5dorentus      2014-03-06 18:20:10 +08:00 Javascript 有继承吗? | 
|  |      6bakac      2014-03-06 18:21:54 +08:00 都是原型链上加东西而已 | 
|  |      7arbipher      2014-03-06 18:32:48 +08:00 为什么JS面向对象很难理解,因为“继承”这种方式不是在所有的OO中都用得到的。 OO还有基于对象clone的OO(self),有基于继承的(java),基于原型的(JS)。 JS的“继承”和它本身的原型混杂在一起。 | 
|  |      8Julyyq      2014-03-06 18:39:30 +08:00  1 首先,实现JS继承的方法有很多种,不止是简单的在原型链上加东西而已。 其次,实际应用场景在大项目中使用比较多,因为往往大项目中功能比较复杂,如果不做好代码的抽象和封装,那么你越写就感觉越“难写”,更别说将来维护你代码的人了。 最后,举个栗子,比如一个网站中有个Search类(就像百度首页那样输入搜索内容,下面会有提示的东西),比较好的实践是Search类继承自Input类,Search类只负责“搜索”,Input类只负责“设置数据”,“获取数据”等和用户的输入值相关的操作。像这样每个类各司其职,代码的藕合度就会大大降低,扩展性也会得到非常大的提高。 | 
|  |      9otakustay      2014-03-06 18:57:35 +08:00 @FrankFang128 无论js是什么方式的OO,他都是OO,有OO就有继承嘛,原型继承也是继承,我想楼主也没说是java的那种基于class的继承 我认为继承还是需要的,但要有js的特色,比如社会主义……(有快递我去开下门) 复习下,面向对象3大特性:封装性、多态性、继承性,和怎么样OO没有关系 | 
|  |      10FrankFang128      2014-03-06 20:11:57 +08:00 @otakustay  JS 当然是 Object-oriented,Java 倒像是 Class-oriented。 | 
|  |      11otakustay      2014-03-06 21:04:17 +08:00  1 @FrankFang128 厄……我的概念和你不一样,我是这么认为的: 1. JS和JAVA都是Object-oriented 2. JS是prototype based object-oriented 3. Java是class based object-oriented | 
|  |      12darasion      2014-03-06 23:14:38 +08:00 没啥优势。 反正我不用继承。 | 
|  |      13miniwade514 OP @otakustay ,@hitsmaxft ,@Julyyq  看来还是在大项目中用得多,有很多要被重用的功能,就封装到类 @hkongm ,@darasion 我相信还是有适合使用继承的场景的,但是我经验不足导致无法拿捏 @FrankFang128 I wish I knew Java @_@ @arbipher 我一直以为JS是基于“原型”的“继承”啊,听你一说有点懵了…… 感谢各位的精彩回复! 不过还是很期待各位分享一下对 “在哪些时候使用继承?” 的见解啊! | 
|  |      14miniwade514 OP 如果能举个栗子,那就更好了! 多谢 | 
|  |      15arbipher      2014-03-07 01:01:12 +08:00 @miniwade514 我说的不准,后来也没法修改了。我的意思就是11楼。继承只是OO的一种方法。 | 
|      16muyeyang      2014-03-07 02:10:03 +08:00 via iPad 觉得Javascript用mixin比较多。继承没有什么用。 个人以为,面向对象的核心应该是: 1 消息 2 委托 消息通讯把每一对象的实现隐藏在接口之下。 通过把复杂的功能委托给其他对象,使得每个对象只用关心自己的核心问题。 | 
|  |      17arbipher      2014-03-07 02:55:31 +08:00 via iPhone @muyeyang 我觉得OO的核心是 消息传递和多态。委托更像是实现技巧,或者说设计模式。 好吧,我是来抠字眼的。 | 
|  |      18sivacohan PRO 先说明,js我连入门都算不上…… 似乎有这么一句话 “面向对象除了在GUI上其他方面并没有什么优势” 大概是在Unix编程艺术里面提到的 如果js很贴近响应,那基本就没办法写什么面向对象了。各种事件什么的。 如果做web app的话,可以把逻辑提取出来,做点抽象。如果做动画库的时候,也可以考虑抽象点东西出来。 我现在些js的话,通常会分出这么几个类型的。models,数据类型,里面会做一些数据的过滤和绑定之类的东西。helper,简单的帮助类,不允许有人继承helper,但是helper有可能继承models。tpl,直接对应templates,这里面的东西都是一次性的了…… | 
|  |      19miniwade514 OP @sivacohan 看来除非写的东西已经达到了框架/库的复杂度(就像你说的动画库、和你自己实现的MVC),否则继承的运用场景确实不是很多。就我自己的经验而言,一般也就抽象到类,很少用继承再去抽象出子类什么的。 | 
|  |      20vilic      2014-03-07 14:03:11 +08:00 个人一时的观点. JS 继承用得不多的一个很重要的原因是, 不方便. 所以大家没有这个习惯. 但实际上有很多异曲同工的方法被广泛地使用了, 本质上它们的作用是一样的. | 
|  |      21yakczh      2014-03-07 19:48:51 +08:00 js都是实例的引用,所谓的继承就是把引用的值都复制一份,还分深浅复制,其实js实例就是个{}容器,开始把能想到的属性写上去,程序在执行的时候,需要什么再加什么就行了 | 
|  |      22miniwade514 OP |