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

2022-05-05 18:05:09 +08:00
 WangLiCha
自学的前端做了些东西,现在比较习惯用更接近传统面向对象语言一点的 Typescript ,之前学 JS 的原型链的时候费了很大的功夫,有点想知道熟练掌握原型链的话对于面试以外能有什么实际的帮助吗?想请教一下各位可能用 JS 更多一点的 V 友们。
5735 次点击
所在节点    程序员
76 条回复
TWorldIsNButThis
2022-05-05 20:30:45 +08:00
纯纯的 bullshit 属于是
lmshl
2022-05-05 20:37:31 +08:00
随便看看 MDN 脑子里有个印象就行了,不值得深入学习。进化了几亿年才有的这宝贵的大脑空间,用来装原型链多少有点反进化论了。
hunter0122
2022-05-05 20:38:02 +08:00
@ccyu220 这句真的是刚学 vue2 时候挠破头都没想通的东西。哈哈哈哈
wenwei1202k
2022-05-05 20:46:24 +08:00
原型链是 js 的基础内容,现在都有 class 的语法糖了,常规业务代码里别用 prototype ,但是如果要写些抽象工具类库或者类似框架级别就非常有用,你的代码越抽象原型链就越有用,有需要再研究未尝不可,初学的时候不容易感受到这种奇淫巧技的乐趣,typescript 并不是不建议使用 prototype ,而且需要用到的情况太少了
cocong
2022-05-05 21:47:28 +08:00
实际帮助就是你获得了一种实现面向对象的实现方式。像 Lua 没有 class ,但可以用 元表 实现,道理和 原型 差不多。所以说知识都是想通的。就不如数据库可以通过外键,关联其它表,再类比原型,就可以实现数据的继承,起到压缩数据,节省空间的效果。

其实这些基础知识什么的并不难,正所谓“会者不难、难者不会”,多学多动多思考,仅此而已。
Leviathann
2022-05-05 22:08:19 +08:00
别说 prototype 了
我连 class 和 interface 都不用
只用 type 和函数 /lambda
Rocketer
2022-05-05 22:37:24 +08:00
私以为,只有花了太多功夫在这些过时概念上的人才会说它有用,目的只是找回心中的那分平衡。

可能用原型链能让代码变得短一些,但这也会降低代码的可读性,在团队开发中会被视为奇技淫巧,不受欢迎。

更何况 JavaScript 的奇技淫巧比 Java 少多了,Java 大神在团队里都不敢玩,JavaScripter 还炫啥技呢?
irisdev
2022-05-05 22:46:44 +08:00
用不上,但是还是要知道的
hussar
2022-05-05 23:05:00 +08:00
js 继承是不是也用不到,除了 class extends 见到过,其他的…
dcsuibian
2022-05-05 23:19:43 +08:00
工作中根本不用,但你得会。
框架不懂原理也就算了,js 的基础还是得打牢啊。
wisetc
2022-05-05 23:26:41 +08:00
js 中类的继承底层是原型链,不要想得太复杂,不掌握也能开发,只是不理解 js 的怪异之处。
fstar
2022-05-05 23:29:30 +08:00
有点用啊。掌握了不容易写出错误代码。
问:
const map = {}; 和 const map = Object.assign(null); 哪个是正确的哈希表写法。
AyaseEri
2022-05-05 23:32:22 +08:00
不要求熟练,但至少得知道是咋回事吧。免得碰上极端情况需要人肉 debug babel 后的代码。
vance123
2022-05-05 23:32:23 +08:00
反序列化一个对象的时候,可以通过 setprototype 给它添加上方法。其它地方倒没用到过。
不过 prototype 是 js 的一个基石,你要知道再高级再诡异的用法,都逃不开这些东西。理解语言的边界在哪里还是有好处的
Pastsong
2022-05-05 23:34:51 +08:00
原型链用不到但是要懂,是语言核心设计的一部分,属于看你愿不愿意了解 How it works.
Pastsong
2022-05-05 23:35:42 +08:00
@fstar 抢答,是 const map = new Map();
ruoxie
2022-05-05 23:37:35 +08:00
很久很久以前看 JQ ,EXT JS 等源码会有用
keithwhisper
2022-05-05 23:37:59 +08:00
工程化的项目一般用不上奇技淫巧, 但是需要有能看懂和填坑的能力, 自己组可以控制代码, 但是对第三方的依赖无法控制, 万一被坑到了不至于找不出原因.
adoal
2022-05-06 00:01:27 +08:00
OO 大沙文主义终于在 JS 程序员圈也取得了胜利😄
aristotll
2022-05-06 00:07:20 +08:00
@Pastsong #36 hhh

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

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

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

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

© 2021 V2EX