Javascript 的原型和原型链相关的基础知识对实际工作有什么帮助吗

2022-05-05 18:05:09 +08:00
 WangLiCha
自学的前端做了些东西,现在比较习惯用更接近传统面向对象语言一点的 Typescript ,之前学 JS 的原型链的时候费了很大的功夫,有点想知道熟练掌握原型链的话对于面试以外能有什么实际的帮助吗?想请教一下各位可能用 JS 更多一点的 V 友们。
5480 次点击
所在节点    程序员
76 条回复
jones2000
2022-05-06 00:16:11 +08:00
没什么用, 只用js基本的语法写, 这样起码下个接手的人能看懂。
agagega
2022-05-06 01:16:50 +08:00
@ccyu220
典中典了属于是
xuanbg
2022-05-06 06:59:39 +08:00
知道原型链能解决什么问题比掌握原型链更重要。一项语言的特性而已,平常根本用不到,以后能用到的机会无限趋向于 0 的知识,我的选择是:临时抱佛脚,不用坚决不学。
renhou
2022-05-06 07:53:25 +08:00
一般场景用不到,原型链对于大多数人就是为了面试而存在
elboble
2022-05-06 08:47:26 +08:00
个人觉得 ES6 出来后 class 基本可以取代原型链了,当然老人老办法,新人新办法。下面讲得很清楚了。https://es6.ruanyifeng.com/#docs/class-extends
DOLLOR
2022-05-06 09:41:34 +08:00
我写了这么多年 typescript ,除了偶尔写写 angular ,都没写过几个 class 。
至于原型链,我能想到的使用场景,就是偶尔 hack 别人的东西,给别人的 class 加一些方法、polyfill 。

比如在 string 原型上挂一个 encode 方法
const encode = Symbol('encode')
String.prototype[encode] = function(codeName){/*...*/}
然后就可以在字符串上使用 encode 方法
const gbkArrayBuffer = '测试'[encode]('gbk')
wu67
2022-05-06 09:46:06 +08:00
最多就是往 vue 的原型上定义全局变量, 用来方便 this.*****这样全局调用. 如果封装公用库或者 sdk, 还是 class 方便.
charlie21
2022-05-06 10:27:28 +08:00
理解原理 但不使用
sampdoria
2022-05-06 10:45:36 +08:00
说白了,那些不常用的 coding 知识的掌握程度,完全取决于程序员对自己的要求。
你可以选择去学,也可以选择远离它。人的精力有限,没人能面面俱到,这个很正常。选择取决于定位:这门语言,这门技术对你来说是饭碗,还是加菜;你是满足于做做 feature ,还是希望能深入进去,做点大事。
每个人都有自己的答案,你选择不学,没有问题,无非就是失去一些机会,看你能否接受呗

顺便提一句,面试的时候问一些不常用但是很基础的知识点,是非常正常的,跟什么八股无关。人家只是想看看你对自己的要求罢了。如果能选的求职者多,谁不愿意选一个对自己有要求的呢。
zhouyg
2022-05-06 10:58:54 +08:00
知道,理解,但工作 100%不要使用
nomagick
2022-05-06 11:39:26 +08:00
对码农没用,对工程师有用。

如果你发现没用,不好意思老哥还在码农阶段。

咱这还有好多没写过 class 搞不懂 this 的,怎么还能沾沾自喜了,我都替你们捉鸡啊真的
marcong95
2022-05-06 11:59:54 +08:00
原型链确实不是什么很好用的东西,但是不太能理解的是,原型链这种概念真的给你们带来这么大的心智负担吗?似乎有缘还是要看看你们口中的八股到底把原型链这东西玩得多花。。。

建议直接手写 wasm ,本站似乎已经有位猛士已经这么操作了
shanejix
2022-05-06 12:52:53 +08:00
没有原型的 js 还叫 js 么😑
yedanten
2022-05-06 13:14:22 +08:00
个人见解,对于开发来说,没用,如果你搞安全,可能有那么点用,挖挖 babel 的漏洞,或者尝试修改破解一些 js 库有那么点帮助
wangtian2020
2022-05-06 13:20:04 +08:00
会了原型链就能解释在 vue 中
为什么我挂载在 Vue 对象上的工具属性 能在全局引用
就能理解原型链污染是怎么一回事

但是并没有卵用场景,知其然所以然好玩罢了
bojue
2022-05-06 13:20:29 +08:00
可以用不到,但是你要知道
aguesuka
2022-05-06 13:35:17 +08:00
其实标题对于任意语言的常见 trick, 答案都是一样的, 用这门语言, 就绕不开, 但是能别用就不要用, 一定要用的情况控制起来. 另外一些非工程的场景, 比如说 debug, hack 时很有用.
kamal
2022-05-06 14:56:23 +08:00
KouShuiYu
2022-05-06 15:02:38 +08:00
用处不是太大,JS 都模块化了基本上用函数就解决一切了
Lxxyx
2022-05-06 15:08:13 +08:00
日常开发用不着,了解概念有必要,基本上 Class 就能覆盖大部分场景了。

至于那些说不懂原型写不了代码的,是在扯淡。。

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

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

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

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

© 2021 V2EX