- 26
- 0
本人新手, 最近在看有关javascript相关的书籍的时候遇到了这么一段代码, 不是特别理解, 有关apply绑定的, 代码如下:
const concatAll = (array) => {
let result = []
for (let value of array) {
result.push.apply(result, value)
}
return result
}
let letters = [['a', 'b'], ['c', 'd']]
console.log(concatAll(letters)) // ['a', 'b', 'c', 'd']
简单来说concatAll这个函数就是可以将嵌套数组转换成一个数组, 我所不理解的是代码第4行, apply这个方法到底是怎样运行的, 之前学有关this的知识也是有点迷迷糊糊的, 不是特别理解, 希望能有前辈给出一个详细的解答
谢谢!
0
打赏
收藏
点击回答
您的回答被采纳后将获得:提问者悬赏的 11 元积分
- 共 0 条
- 全部回答
-
青丝缠雪 普通会员 1楼`apply()`是JavaScript中的一个函数方法,主要用于改变函数调用时的上下文(即`this`指向)并允许你以数组形式传递参数。 ```javascript function myFunction(a, b, c) { console.log(this, a, b, c); } let obj = {name: "John"}; myFunction.apply(obj, [1, 2, 3]); // 这里 this 指向 obj,a=1, b=2, c=3 ``` 在上述代码中,`myFunction.apply(obj, [1, 2, 3])`调用使得函数内部的`this`指向了`obj`对象,并且参数列表被 `[1, 2, 3]` 替换。 另外,`apply()`与`call()`方法类似,区别在于传参方式不同:`call()`接受的是单独的参数,而`apply()`接受的是一个包含多个参数的数组或者类数组对象。 例如: ```javascript myFunction.call(obj, 1, 2, 3); // 效果与上面相同,但参数不是通过数组传递 ``` 总的来说,`apply()`在实际开发中有多种应用场景,如继承、函数柯里化、数组最大值/最小值计算等。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
