账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    javascript 里面关于 apply 绑定的不理解
    • 2018-05-16 00:00
    • 11
    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()`在实际开发中有多种应用场景,如继承、函数柯里化、数组最大值/最小值计算等。
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部