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

2022-05-05 18:05:09 +08:00
 WangLiCha
自学的前端做了些东西,现在比较习惯用更接近传统面向对象语言一点的 Typescript ,之前学 JS 的原型链的时候费了很大的功夫,有点想知道熟练掌握原型链的话对于面试以外能有什么实际的帮助吗?想请教一下各位可能用 JS 更多一点的 V 友们。
5762 次点击
所在节点    程序员
76 条回复
darkengine
2022-05-06 15:13:34 +08:00
撕逼的时候有用,你没掌握原型链骂不过人家
gzxworknb
2022-05-06 15:15:28 +08:00
@ccyu220 太真实啦, 哈哈哈, 我第一次看到这个代码整个人都不好了
anguiao
2022-05-06 15:48:39 +08:00
@fstar 正确写法是用内置的 Map 对象
vision1900
2022-05-06 16:19:51 +08:00
至少查 MDN 的时候,比如 `reduce`, 它显示的是 `Array.prototype.reduce` 你要知道是为什么

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce
qiumaoyuan
2022-05-06 16:28:24 +08:00
ECMAScript 6 有了 class 和 extends 之后比较用不着这玩意。这玩意主要是在 ECMAScript 6 之前用于实现“类继承”的功能。
lisongeee
2022-05-06 17:26:59 +08:00
前端的 ui 构建这块其实不太应用”继承“的概念
panlatent
2022-05-06 17:54:01 +08:00
我觉得学习这个东西花不了太多时间,但不了解容易在你解决疑难杂症的时候花费数倍甚至数十倍的时间
coolzjy
2022-05-06 18:14:59 +08:00
ES 2015+ 日常代码直接接触原型和原型链的机会确实越来越少了,面向对象有 class 语法,[].slice.call(arguments) 这种语法也都被 Rest / Spread 操作符替代了,加上 FP 趋势,写几年代码也接触不到原型也挺正常的。
AloneHero
2022-05-06 22:11:55 +08:00
都怎么回事? class 的本质也是原型链啊,就日常开发确实很少用到,但是要想给团队做公共基础库(非工具类库),想把自己做的东西在公司级推广,肯定得考虑好既做好基础功能,又要给别人留够拓展的余地,这就需要非常明白你作为原型链上的一环会如何影响到你的子类实例,你的子类实例又会如何覆盖原型链。而且实际上这个机制挺简单的,没必要避开
yaphets666
2022-05-06 23:44:16 +08:00
@ccyu220 小程序有时候会用到,不支持箭头函数的地方
codehz
2022-05-07 06:43:35 +08:00
——目前主要的作用是做 monkey patch ——或者写 polyfill —— 原型链虽然说性能不好吧,但总比 Proxy 快
日常开发写的 class 其实在现行 es 标准下还是有些区别的,不仅仅只是一个“语法糖”,不用 class 语法的情况下有些特性是无法实现的——最基础的,原型写法无法正确继承 Array, String, Date, Map 等内建类型,也无法继承 HTMLButtonElement 等 Dom 类型——导致 CustomElement 无法实现——从标准角度来说,它是对原本对象模型的一个完全改进,绝非能说一句语法糖即可概况——而保留的原型只是为了维持以往的兼容性
waiaan
2022-05-07 09:11:47 +08:00
基本用不到但必须知道。
duan602728596
2022-05-07 10:47:27 +08:00
项目里的原型链和面试时候的原型链是两种
devwolf
2022-05-07 11:08:07 +08:00
目前为止对我的工作没有帮助,但我室友的那边公司里确实有人(大佬)在用(有次我去帮忙改前端的时候瞥到过)。
ming159
2022-05-07 11:29:46 +08:00
普通的写写逻辑你可以不关心原型链,无非就是声明个变量,if-else ,for 循环。
但是,如果你是处在核心研发团队,做框架,并且还提供个其他人用,如果你不懂原型链,那肯定不敢用你,鬼知道你把 “this” 给了谁。
ctrlcoder
2022-05-07 19:06:15 +08:00
用不用是 一回事,懂不懂是一回事

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

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

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

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

© 2021 V2EX