浅谈面向对象

重新认识JavaScript面向对象: 从ES5到ES6
👆这篇文写的不错

在此之前我先摊牌,我目光狭隘、见识短浅、理解俗套,故以下观(tu)点(cao)权当笑话看就好~

作为一名对C++浅尝辄止、对Java只有过一面之缘、对Python的记忆尚停留在pandas和numpy调用上的菜菜子,我万万没想到,众人口中的面向对象指的就是封装多态继承。这3个词就已经够装X了,最后还给这3个词戴了个更装X的帽子——面向对象。当然了,本菜菜子也体会不到广大编程人员从C++、Java这些严谨、经典的语言,转入JS这种自由奔放、还可能偶尔脱线的语言怀抱时,那种强烈的不适。

曾几何时,在某编程课中,老师解释了,面向对象是相对于面向过程提出的思维、思路,对!它只是一种思维!我依旧记得老师当时举的例子——造汽车。面向过程,相当于是建一条汽车生产流水线;而面向对象,则更关注汽车本身的一系列属性,如外观、发动机型号、排气量等等,最终这些属性组合起来就是一辆汽车。

用到这一思想的场景,生活中比比皆是,无非是提高模块化程度,使分工明确,可多处套用。所以我不太能理解,现实中大家为什么要把这个思维和编程语言强行捆绑。好像少说点黑话,就显得自己不专业似的。

封装

你是否记得在你初学编程,老师给你讲函数的作用,就是一个具有特定功能的代码块,再来看看造汽车,是不是就是一个函数负责生产玻璃、一个函数负责生产轮胎、一个函数负责生产发动机……因为是批量生产,所以函数被多次复用了。这不就是封装的目的?是的,早在接触函数(甚至是数学函数f(x))时,我们就在潜意识里与封装结缘了。

反观JS的封装,大家举的例子基本上可用两个字概括——模具。就像填表格一样,你把属性值补充一下,这个表就是特指某一实例的身份标记,在一定的场合下,可行使一些用途。在本质上,这和函数不是一个作用吗?一个没有感情的工作机器,不断重复重复重复。

多态

资本家怎么赚钱,靠的就是贪婪!所以多态是啥?多态就是,资本家想,既然挡风玻璃和后视镜啥的都是玻璃做的,不如你们两个生产部门合并吧,加工镜面时,在玻璃上加一层反光涂料就行啦!顺便裁下员,节省开支(搓手手~)

对比多态官方解释,

同一操作作用于不同的对象产生不同的执行结果

是不是就是上面那个意思?可类比jQuery(selector),既可以在里面填className,还可以填id或tagName,不管是啥,只要存在就能帮你找到。生活中,我们更倾向于称之为一专多能、全能型人才、随机应变、因地制宜。好家伙,现在又多了一种描述,叫多态🙂

继承

这个例子就更多了,基因遗传、手机更新换代、软件版本迭代、家产继承,比比皆是。举个栗子,你没车没房,你爸有套房,你姥爷有辆车,你爷爷老家有三间宅子,你会对外咋说,你说我家有4房1车,是的,在外人看来就可以理解为你有4房1车,因为你随时可用它们(或者说,他们默认这些资产迟早会成为你的),当然,等你钱攒够了,你也可以买一些固定资产出去装X,但你爸、你爷爷、姥爷他们这些长辈要面子啊,他们肯定不会说你买的东西是他们的。这就是继承,无论是原型链还是类,基本都是这个思想。


所以,面向对象一点也不高深,它本身也和语言没有必然联系,只是一些语言能够轻易实现以上三种特性,就被称为面向对象的语言。而Python(面向对象)是用C(面向过程)写的,是不是有点滑稽。

以下为知乎上关于“怎么理解 C 语言是面向过程的语言,C++ 是面向对象的语言?”问题的部分回答:
在这里插入图片描述
在这里插入图片描述
可能是没经历C语言时代的吊打,也没经历C++、Java的严谨,就直接上手了JS,因此面向对象的三个基本特性、原型链等等对于我来说,太顺其自然了(就好像你问我为什么要管生你的人叫妈妈),以至于从没刻意去理解过,却已经无意识的用了很多次了。

这些经验总结提炼为面向对象四字本是好事,可是行业黑话,装X利器呀!就有人爱死磕,还有人爱贩卖焦虑,把这玩意吹得多难,声称好多人就是不能理解啥的,我的天呐!不能理解的话,转行不就行了吗?

同样被神化的技术名词包括但不限于:闭包,this,promise,作用域……

需要明白的是,现实中,我们是解决了一个问题,最后总结发现自己用到了闭包;而不是,这个问题我要用闭包解决,所以我才写出了闭包。so,很多东西是人们无意识中写出的,而在世界的另一个角落,有人心有灵犀地跟你写着类似的代码,一传十十传百,才形成了今天的这些名词,并总结形成一定的规范,故这是符合人类思维逻辑的,一个二个不要试都还没试试,就被吓跑了,懂的人也没必要为了装X,再去把这些概念神化,解释称人类听不懂的话,哎~

这让我想起了大三时的一件事,当时我想去报个Java培训班,结果因为Java太难,整个机构就我一个人报名,老板觉得为我请一个老师不划算,就把我劝退了。讽刺的是,Java这么“难”,而用Java的程序员是最多的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值