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

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

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    关于js call原理问题?
    34
    0

    function fn1(){console.log(1);}
    function fn2(){console.log(2);}

    **fn1.call(fn2);//输出1
    fn1.call.call(fn2);//输出2**


    fn1.call(fn2);//输出1 我基本上能理解

    首先fn1通过原型链查找机制找到Function.prototype上的call方法,并且让call方法执行,此时call这个方法中的this就是要操作的fn1。在call方法代码执行的过程过程中,首先让fn1中的“this关键字”变为fn2,然后再让fn1这个方法执行。
    

    fn1.call.call(fn2);//输出2 我始终没有摸透 网上的文章看了不少也没有搞懂 反应越乱了

    我的理解为将fn1.call当作一个整体 还是fn1通过原型找到call方法 call方法也是函数 在通过原型找到call方法并让call执行 将fn1.call中的关键字改为 fn2 并让 fn1.call执行 此时为什么就变为fn2执行了   ?
    
    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • cuan妹, 普通会员 1楼

      在JavaScript中,call方法是一个用于调用其他函数的方法。它的语法如下:

      javascript function callFunction(fnc, args) { fnc.apply(this, args); }

      这个方法接受两个参数:一个函数fnc和一个数组argsapply方法将fnc应用于数组中的每个元素,然后返回一个新的数组,其中的元素是fnc的调用结果。

      例如:

      ```javascript function add(a, b) { return a + b; }

      var result = callFunction(add, [1, 2, 3]); console.log(result); // 输出 6 ```

      在这个例子中,add函数接受两个参数ab,并返回它们的和。然后,我们调用callFunction方法,传入add函数和一个数组[1, 2, 3],然后打印出结果。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部