关于JavaScript的面向对象

2013-07-18 18:36:05 +08:00
 panlilu
好久没来发帖了,一直处于万年潜水的状态。不知道还有没有朋友认识我。

不要被标题骗了,其实这是个吐槽帖。

感觉创业有点疲劳了,想去找点工作学点东西。然后去某公司应聘前端。
其实很长一段时间我都是那coffeeScript写前端的,不过反正也就是个语法糖,其实也没什么很不一样的地方。
由于是朋友内推加上我从来没有面试过,加上可能对自己的能力有点太自信了,所以完全没有任何准备。。(真该去看看类似前端面试宝典之类的东西)
面试官先问 javascript/css/html 你比较熟悉哪个?然后我说javascript吧。
然后接着问,面向对象的三个基本特征是什么。
我愣住了,说实话平时用OOP就是为了让代码看上去好看点,封装的漂亮点,偶尔可以重用下罢了。突然问我这个,我真的一下子答不上来。然后我个人心里素质也不太好,一下子就有点慌了。
然后问我javascript怎么实现这三个特性。
我只知道javascript的OOP实现是很裸的,也不怎么原生,大概就是把被继承的放到prototype里面,然后执行的时候会自己去一层层的链式调用。不过我也忘了当时是怎么说的。
总之最后的结果是,认为我的基础不够,能力在他们前端的平均能力之下,然后被拒了。

很久以前在v2ex上面看到一篇帖子讨论过 不会OOP的javascript的程序员就是野生程序员之类的。

看来我也属于一个野生程序员。

吐槽完毕。
最后友情提示大家面试前一定要准备一下(也许面试前不准备的大概也就剩我一个了吧)。
6034 次点击
所在节点    JavaScript
38 条回复
yakczh
2013-07-18 18:37:44 +08:00
抽象,封装,重载
panlilu
2013-07-18 18:40:03 +08:00
@yakczh 额,明显是 封装、继承和多态 吧。
cloud_dai
2013-07-18 19:07:04 +08:00
pan大神,来仰慕了。
jiyinyiyong
2013-07-18 19:42:24 +08:00
类的面向对象, 原型的面向对象, JS 先后被 Java 程序员影响
乱七八糟的类型构造器, 迟到到 __proto__ 属性...
其实我很想问楼主那是哪里的工作, 可以用 CoffeeScript?
chone
2013-07-18 19:50:38 +08:00
确实不懂js的oop也能解决问题,但oop确实也是js语言的很重要部分。
sivacohan
2013-07-18 19:57:22 +08:00
我认为js谈基于class的面向对象纯粹是耍流氓。
以后谁再跟我说面向对象,我就给他讲prototype
switch
2013-07-18 20:08:24 +08:00
davepkxxx
2013-07-18 20:39:19 +08:00
我面试前也从来不准备,只是对着简历看看,然后想想怎么说工作经验的事情。

关于用 JavaScript 实现继承,可以看看 http://www.cnblogs.com/sanshi/archive/2009/07/08/1519036.html
panlilu
2013-07-18 20:51:04 +08:00
@cloud_dai 过奖,哪里是什么大神。
@jiyinyiyong 之前是自己创业,当然想用什么技术就用什么技术。coffeeScript确实简化了js的面向对象写法,在一些语法上面看上去也更加漂亮。
@chone 其实我不是不懂js的OOP,只是用到的比较少一下子被问住了而已。
heroicYang
2013-07-18 21:08:32 +08:00
好吧,我觉得JavaScript OOP都可以算是月经贴了,哈哈~
leegorous
2013-07-18 22:29:41 +08:00
FP 才是正路啊
jiyinyiyong
2013-07-18 22:56:35 +08:00
@sivacohan 讲 Dart 和 ES6 都加入了 class, 找谁说理去
jiyinyiyong
2013-07-18 22:57:11 +08:00
@leegorous 太超前了, 结果是浏览器和社区支持跟不上.
yuelang85
2013-07-18 23:03:11 +08:00
我觉得js和python面试,被问 oop 是一件很 郁闷 的事情。
DaniloSam
2013-07-18 23:28:17 +08:00
js oop = 月经贴

面试 = 月经贴

js oop + 面试 = 月经紊乱贴
heganj
2013-07-18 23:44:59 +08:00
Functional programming is a good thing, Object Orientation is overrated.
http://clojure.org/rationale
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

还没毕业的表示对面试有恐惧心理啊, 总害怕自己有啥缺憾会被人拉出来嘲笑... 也害怕遇见奇葩面试官问出小概率问题然后回答不出被对方吐槽... 好恐怖啊
panlilu
2013-07-19 00:12:59 +08:00
@heganj 我很喜欢lisp的函数式编程思想,而javaScript是我用过的生产环境下这个思想体现最明显的语言了。
@DaniloSam 月经紊乱,哈哈哈;其实我是来骗金币的。
@Hyperion 这篇文章几年前看过的,GR里还加着星标的,可惜现在GR没了。。
sivacohan
2013-07-19 00:59:09 +08:00
@jiyinyiyong 这个问题我这样看,语言仅仅是语言。JavaScript语言精粹有一句话我觉得说的一针见血,大概意思是,js里面有糟粕,但是不影响我们只使用精华。我们可以在某个语言中提炼一个子集出来。
很多语言都有一些不知道为什么产生的没什么用的设计。最常见的一个多余的设计就是在非函数式语言里面玩尾递归。当然,我们可以理解为他的目的是为了减少函数栈,防止溢出blablabla……但是这玩意在函数式语言里有一个重要到必要的作用是实现循环。我们都有for了,还要这玩意干什么,而且尾递归,实际上不就是for吗?
bitsmix
2013-07-19 01:44:26 +08:00
@jiyinyiyong 不知道 LZ 说的是哪儿,但是俺们厂的确在大规模的用 coffee

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/76223

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX