JavaScript中的call和apply到底是用来干什么大物,总是对他俩的用法特别迷

发布于 2022-09-11 23:20:40 字数 48 浏览 16 评论 0

JavaScript中的call和apply如何使用,这两个函数存在的目的是什么?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

赠我空喜 2022-09-18 23:20:40

这俩函数有啥用、咋用,看 MDN 就行了。

我主要是来吐槽的。

写前端的直接承认就行了,JavaScript 这门语言被 Brendan Eich 搞的就是屎!一!样!的!设!计!

Wiki 上原文:

JavaScript was originally developed in 10 days in May 1995 by Brendan Eich, while he was working for Netscape Communications Corporation. Indeed, while competing with Microsoft for user adoption of Web technologies and platforms, Netscape considered their client-server offering a distributed OS with a portable version of Sun Microsystems's Java providing an environment in which applets could be run.[citation needed] Because Java was a competitor of C++ and aimed at professional programmers, Netscape also wanted a lightweight interpreted language that would complement Java by appealing to nonprofessional programmers, like Microsoft's Visual Basic (see JavaScript and Java).[10]

大意就是 JavaScript 根本就是 Bredan Eich 这一个实习生在短时间内赶工出来的一个目标轻量级的解释形语言。

Bredan Eich 本来是个写 Lisp 的,压根就没搞过 OOP,但是当时网景想借 Java 的“东风”,结果他“苦熬”十天憋出来这么个玩意儿。你能在 JavaScript 里看到很多 Lisp 的影子,感觉它好像是个函数式的。函数式里函数是第一等公民(即所谓的 First-Class Function),函数可以被当作参数传递给另一个函数,这里就涉及到作用域的问题。可是又特么有个不伦不类的 prototypethis,又有点儿像 OOP。callapply 就是这种情况下的产物,又像函数式又像 OOP。


补充:

呵呵好几个踩我的,都是前端没跑了。

我自己也写前端,写这么多年了谁骂 JS 我给谁点赞。

JS 是屎、可不代表用屎写不出来牛哔的作品来。这都拎不清的我劝你趁早转行。

估计水平不咋地的人看到自己唯一会的一门语言被骂,只会急得跳脚,暗搓搓地点个踩心里再喷两句,也不想想自己写的代码是不是屎上加屎。

分分钟 2022-09-18 23:20:40

绑定this 借用别的原型链的方法

淡紫姑娘! 2022-09-18 23:20:40

Array.prototype.map 也可以用 for 循环实现,存在的目的又是什么呢?

赠我空喜 2022-09-18 23:20:40

关于用法,参见 MDN文档:Function.prototype.call()
至于ES标准提供这两个方法的目的,那肯定是让大家ES用得更称手一些,官方已经给出了很好的例子,不信你撇开 apply 自己写一个求任意长度数值数组最大值的方法,代码量和官方示例一比就能看出来了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文