Js 中apply()和call方法的作用

  • 说起这两个方法的用处,还得重我今天碰到的一个问题难以接答入手。题目:

    找出答案,然后给下面的代码添加一行最短的代码,使其输入 quantum entanglement

      xInContext = ->
        console.log @x
      what={x: 'quantum entangment'}
    
  • 我看到这个题目一时之间一点思路都没有,完全找不到答案啊,最后一次意外看别人的代码找到了答案,对的答案和 apply() 和call() 有关

    在这里我先给出答案吧!

      xInContext.apply(what)
      or
      xInContext.call(what) <b>最可悲的是知道两个答案后,我居然不知道这两个方法重何而来,又有何用</b>
    

    call方法:

      Function.call(obj,[param1[,param2[,…[,paramN]]]])
      obj:这个对象将代替Function类里this对象
      params:这个是一个参数列表
    

    apply方法

       Function.apply(obj,args)方法能接收两个参数
       obj:这个对象将代替Function类里this对象
       args:这个是数组,它将作为参数传给Function(args-->arguments)
    

    call:和apply的意思一样,只不过是参数列表不一样.