JavaScript中的call和apply如何使用,这两个函数存在的目的是什么?
关于用法,参见 MDN文档:Function.prototype.call()。
至于ES标准提供这两个方法的目的,那肯定是让大家ES用得更称手一些,官方已经给出了很好的例子,不信你撇开 apply 自己写一个求任意长度数值数组最大值的方法,代码量和官方示例一比就能看出来了。
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
这俩函数有啥用、咋用,看 MDN 就行了。
我主要是来吐槽的。
写前端的直接承认就行了,JavaScript 这门语言被 Brendan Eich 搞的就是屎!一!样!的!设!计!
Wiki 上原文:
大意就是 JavaScript 根本就是 Bredan Eich 这一个实习生在短时间内赶工出来的一个目标轻量级的解释形语言。
Bredan Eich 本来是个写 Lisp 的,压根就没搞过 OOP,但是当时网景想借 Java 的“东风”,结果他“苦熬”十天憋出来这么个玩意儿。你能在 JavaScript 里看到很多 Lisp 的影子,感觉它好像是个函数式的。函数式里函数是第一等公民(即所谓的 First-Class Function),函数可以被当作参数传递给另一个函数,这里就涉及到作用域的问题。可是又特么有个不伦不类的
prototype
和this
,又有点儿像 OOP。call
和apply
就是这种情况下的产物,又像函数式又像 OOP。补充:
呵呵好几个踩我的,都是前端没跑了。
我自己也写前端,写这么多年了谁骂 JS 我给谁点赞。
JS 是屎、可不代表用屎写不出来牛哔的作品来。这都拎不清的我劝你趁早转行。
估计水平不咋地的人看到自己唯一会的一门语言被骂,只会急得跳脚,暗搓搓地点个踩心里再喷两句,也不想想自己写的代码是不是屎上加屎。