arguments[0]()坑

今天遇到一道筆試題

      var length = 10;
        function fn(){
            console.log(this.length);
        }
        var obj = {
            length:5,
            methods:function(fn){
                fn();
                arguments[0]();
            }
        };
        obj.methods(fn, 1);  // 10 2
/*
第一個 fn  this指向window   輸出10
第二個 arguments[0]() 可以理解為arguments.0() [只是方便理解] ,
            即argument對象調(diào)用fn函數(shù),所以this指向arguments對象
arguments = {
  0:fn,    //function fn(){console.log(this.length);}
  1:第二個參數(shù) 1,
  length:2
}
*/

延伸:

        var len = 10;
        var obj1 = {
            len:6,
            method:function(){
                console.log(this.len);
            }
        };
        var obj2 = {
            len:5,
            method:function(fn){
                fn();
                arguments[0](); 
            }
        };

        obj2.method(obj1.method,obj2.method);  // 10 undefined
/*
第一個 fn  this指向window   輸出10
第二個 arguments[0]()    this指向arguments
 arguments = {
  0:obj1.method,   //function(){console.log(this.len);}
  1:obj2.method,
  length:2
}
arguments沒有l(wèi)en屬性,所以為undefined
*/
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 工廠模式類似于現(xiàn)實生活中的工廠可以產(chǎn)生大量相似的商品,去做同樣的事情,實現(xiàn)同樣的效果;這時候需要使用工廠模式。簡單...
    舟漁行舟閱讀 8,131評論 2 17
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,174評論 25 708
  • 用兩張圖告訴你,為什么你的 App 會卡頓? - Android - 掘金 Cover 有什么料? 從這篇文章中你...
    hw1212閱讀 14,042評論 2 59
  • 簡單工廠模式 簡單工廠模式,不屬于設(shè)計模式,它違反了高類聚,低耦合。 優(yōu)點: 使用方便,只需要指定需要哪種產(chǎn)品,至...
    Doter閱讀 182評論 0 0
  • 二十一歲的我經(jīng)歷了別人沒有經(jīng)歷過的事,很累很累。 她,之前我一直放不下,也一直釋懷不了,但前兩天我看了一篇...
    H玖玖閱讀 190評論 0 0

友情鏈接更多精彩內(nèi)容