最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JS函數的call和apply的實現方法區(qū)別分析

 更新時間:2023年10月15日 15:23:44   作者:陽哥  
這篇文章主要為大家介紹了JS函數的call和apply的實現方法區(qū)別分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

 方法示例

//apply用法
        function A(alpha,age){
            this.name = 'bob';
            alert(alpha + arguments[1] + this.name)
        }
        (function(){
            A.apply(this,['a',25])
        })()
        
        //call方法
        function B(alpha){
            this.name = 'alice';
            alert(alpha + this.name)
        }
        
        (function(){
            B.call(this,'b')
        })()
        
        //普通函數
        function love(alpha){
            this.name = 'alice';
            alert(alpha + this.name)
        }
        
        (function(){
            love.call(this,'love')
        })()
        //async函數
        async function create(alpha){
            this.name = 'op';
            var res = await compute();
            alert(alpha + this.name + res)
        }
        (function(){
            create.call(this,'b')
        })()
        //generator函數
        function * gen(num){
            console.log(num);
            num ++;
            yield 'first'
            yield 'then'
            yield 'final'
            return num
        }
        (function(){
            gen.call(this,0)
        })()
        
        let it = gen(3);

          console.log(it.next())  // {value: "first", done: false}
          console.log(it.next())   // {value: "then", done: false}
          console.log(it.next())   // {value: "final", done: false}
          console.log(it.next())   // {value: "4", done: true}
          
          
          function compute(){ 
              var num = 0;
              for(let i = 0; i < 10 ; i++){//1+2+3+4+5+ ... + 9 =>(1+9)*9/2 = 45
                  num += i;
              }
              return num
          }

apply和call方法的相同點

可以使得宿主(當前函數對象)在其自己作用域進行執(zhí)行,比如在第一個實例中,使用call和apply的第一個參數context(上下文),也可稱為this對象,傳遞給構造函數A,此時this的作用域為當前構造函數A下。

不同點

傳遞的參數不同,call第二個參數傳遞的可以是任何數據類型 函數、數組...,而apply傳遞的是必須是數組或者類數組。

兩個方法該如何選擇?

根據你要傳入的參數來做選擇,不需要傳參或者只有1個參數的時候,用call,當要傳入多個對象時,用apply

以上就是JS函數的call和apply的實現方法區(qū)別分析的詳細內容,更多關于JS函數call apply方法的資料請關注腳本之家其它相關文章!

相關文章

最新評論

腾冲县| 山东省| 容城县| 西乌| 平陆县| 东丽区| 吴堡县| 昭平县| 新津县| 大丰市| 东阳市| 隆子县| 改则县| 两当县| 革吉县| 上高县| 凤山市| 沁阳市| 永济市| 绿春县| 衡东县| 大关县| 东宁县| 富平县| 土默特左旗| 崇明县| 白玉县| 襄垣县| 汝州市| 定安县| 临夏县| 应用必备| 新平| 天柱县| 阿勒泰市| 兴义市| 同心县| 铅山县| 屯门区| 偃师市| 南平市|