1
yakczh 2013-07-18 18:37:44 +08:00
抽象,封装,重载
|
3
cloud_dai 2013-07-18 19:07:04 +08:00
pan大神,来仰慕了。
|
4
jiyinyiyong 2013-07-18 19:42:24 +08:00
类的面向对象, 原型的面向对象, JS 先后被 Java 程序员影响
乱七八糟的类型构造器, 迟到到 __proto__ 属性... 其实我很想问楼主那是哪里的工作, 可以用 CoffeeScript? |
5
chone 2013-07-18 19:50:38 +08:00 via iPhone
确实不懂js的oop也能解决问题,但oop确实也是js语言的很重要部分。
|
6
sivacohan 2013-07-18 19:57:22 +08:00 via Android
我认为js谈基于class的面向对象纯粹是耍流氓。
以后谁再跟我说面向对象,我就给他讲prototype |
8
davepkxxx 2013-07-18 20:39:19 +08:00
我面试前也从来不准备,只是对着简历看看,然后想想怎么说工作经验的事情。
关于用 JavaScript 实现继承,可以看看 http://www.cnblogs.com/sanshi/archive/2009/07/08/1519036.html |
9
panlilu OP @cloud_dai 过奖,哪里是什么大神。
@jiyinyiyong 之前是自己创业,当然想用什么技术就用什么技术。coffeeScript确实简化了js的面向对象写法,在一些语法上面看上去也更加漂亮。 @chone 其实我不是不懂js的OOP,只是用到的比较少一下子被问住了而已。 |
10
heroicYang 2013-07-18 21:08:32 +08:00
好吧,我觉得JavaScript OOP都可以算是月经贴了,哈哈~
|
11
leegorous 2013-07-18 22:29:41 +08:00
FP 才是正路啊
|
12
jiyinyiyong 2013-07-18 22:56:35 +08:00
@sivacohan 讲 Dart 和 ES6 都加入了 class, 找谁说理去
|
13
jiyinyiyong 2013-07-18 22:57:11 +08:00
@leegorous 太超前了, 结果是浏览器和社区支持跟不上.
|
14
yuelang85 2013-07-18 23:03:11 +08:00
我觉得js和python面试,被问 oop 是一件很 郁闷 的事情。
|
15
DaniloSam 2013-07-18 23:28:17 +08:00
js oop = 月经贴
面试 = 月经贴 js oop + 面试 = 月经紊乱贴 |
16
heganj 2013-07-18 23:44:59 +08:00
Functional programming is a good thing, Object Orientation is overrated.
http://clojure.org/rationale |
17
Hyperion 2013-07-18 23:56:02 +08:00
好久不见@panlilu 了... 一直对tuoj.in 印象很深...
JavaScript的OOP, 我是看这个才明白的... 阮一峰老师... http://www.ruanyifeng.com/blog/2010/05/object-oriented_javascript_encapsulation.html 还没毕业的表示对面试有恐惧心理啊, 总害怕自己有啥缺憾会被人拉出来嘲笑... 也害怕遇见奇葩面试官问出小概率问题然后回答不出被对方吐槽... 好恐怖啊 |
18
panlilu OP |
19
sivacohan 2013-07-19 00:59:09 +08:00
@jiyinyiyong 这个问题我这样看,语言仅仅是语言。JavaScript语言精粹有一句话我觉得说的一针见血,大概意思是,js里面有糟粕,但是不影响我们只使用精华。我们可以在某个语言中提炼一个子集出来。
很多语言都有一些不知道为什么产生的没什么用的设计。最常见的一个多余的设计就是在非函数式语言里面玩尾递归。当然,我们可以理解为他的目的是为了减少函数栈,防止溢出blablabla……但是这玩意在函数式语言里有一个重要到必要的作用是实现循环。我们都有for了,还要这玩意干什么,而且尾递归,实际上不就是for吗? |
20
bitsmix 2013-07-19 01:44:26 +08:00
@jiyinyiyong 不知道 LZ 说的是哪儿,但是俺们厂的确在大规模的用 coffee
|
21
jiyinyiyong 2013-07-19 09:06:17 +08:00
@bitsmix 求留名膜拜
|
22
jiyinyiyong 2013-07-19 09:10:35 +08:00
@sivacohan 函数时语言在网页开发中恐怕体现不出什么优点
图形界面的应用变大以后面向对象是免不了的, 而 JS 缺的就是 OO 函数式在研究和理论方面特别有效, 这方面扯就太深了 Scheme 中为的是达到语法最小实现功能最强, for 被认为是多余 Haskell 里 for 这种过程式的写法基本上就不是函数式能接受的 |
23
heroicYang 2013-07-19 10:19:49 +08:00
@jiyinyiyong 这个说法我赞同,目前真正的前端JavaScript中,很难不用到OO的。。。尤其是现在的Rich Application (Single Page Application)之流~可能我功力还不够,哈哈~
|
24
bitsmix 2013-07-19 11:22:51 +08:00 1
@jiyinyiyong admaster
|
25
zythum 2013-07-19 13:14:10 +08:00
潘熊猫 好久不见了撒。
朱一写东西属于随心所欲流派。js的oo是原型继承,知道特性就好了。到时候该怎么用怎么用。 |
26
zythum 2013-07-19 13:16:23 +08:00
@jiyinyiyong 如果是大型项目的话 朱一建议 多调用,少继承。 这样万一产品想改个需求啊。变个什么的。不会太被动。
|
27
robertlyc 2013-07-19 13:21:19 +08:00
差点以为lz准备黑coffee哪
|
29
middleware 2013-07-19 14:16:14 +08:00
面向对象的三个特性:封装、多态、重用。
继承,不是基本特性,是具体机制。继承可以实现多态(接口继承),但是多态不必非要继承。继承可以实现重用(实现继承),但是重用不必非要多态。 能说明白继承不是面向对象基本特性的,我这里都会优先考虑。 |
30
jiyinyiyong 2013-07-21 00:26:33 +08:00
@zythum 啊啊啊 >_< 这招我还是学不会啊
|
31
jiyinyiyong 2013-07-21 00:28:59 +08:00
@middleware 怎么看"封装 多态 重用"都只是一个特性...
面向对象的边界到底在纳个地方... |
32
Golevka 2013-07-21 02:41:26 +08:00
@jiyinyiyong "动态类型语言里面的面向对象说实话我也不知道究竟好在哪里,对于这种语言那来讲,只要做好functional programming的那部分,剩下的OO究竟要不要,纯粹是一个语法糖的问题。在动态类型语言里面,一个类和一个lambda expression的差别其实不大。" 其实我感觉v神说得还是挺对的.
另外, Haskell里哪来的for? |
33
jiyinyiyong 2013-07-21 11:18:02 +08:00
@Golevka 求介绍 v神 是几楼?
Haskell 里没 for, 我是说 "Haskell 不能接受 for" 深受 #29 楼感召, 认为图形界面必用 OO, 其他领域 OO 多余 我想需要的还是那种构建更灵活的作用域的能力, 而不是 OO 这种所谓对真实的模拟 |
34
darasion 2013-07-21 11:43:36 +08:00
最近一段时间客串了一把前端。
发现如果有UE什么的画出设计图,按照设计图一步一步的做下去其实很容易。 就怕脑子里什么都没有乱写。 |
35
middleware 2013-07-23 09:03:31 +08:00
@jiyinyiyong 「封装 多态 重用」怎么可能是一个特性?它们是相互正交的,实现一个并不需要依赖另一个特性。
|
36
jiyinyiyong 2013-07-24 00:53:36 +08:00
@darasion 只是图的话应该不会有 JS 那么多 Bug 的问题吧
|
37
jiyinyiyong 2013-07-24 00:55:51 +08:00
@middleware 我理解不准确吧..
我觉得重用就必须要封装, 同时导致多态成为必要, 完全正交不懂.. |
38
middleware 2013-07-24 08:27:29 +08:00 1
@jiyinyiyong 重用不一定封装,实现继承就是反例。多态也是一样可以独立的。平时的项目里很少会故意忽略一项,但是不能说它们是一个特性,各自的侧重还是可以独立调整的。
|