亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

一道面試題請問為什么會出現這種結果?

一道面試題請問為什么會出現這種結果?

米琪卡哇伊 2018-08-02 13:19:48
var length = 10;    function fn(){        alert(this.length);    }    var obj = {        length:5,        method:function( fn /* , a */ ){            fn();            arguments[0]();            // this.method.arguments[0]();            // console.dir(arguments);            // console.dir(this.method.length);            // console.dir(arguments.length);        }    }    obj.method(fn);
查看完整描述

2 回答

?
胡說叔叔

TA貢獻1804條經驗 獲得超8個贊

fn()調用的時候應該是綁定丟失(默認綁定),所以是10

之后arg調用,函數的上下文變成了arguments,長度為1


查看完整回答
反對 回復 2018-08-05
?
回首憶惘然

TA貢獻1847條經驗 獲得超11個贊

第一個彈出10應該好理解,第二個彈出1
arguments并不是一個數組,這個你打印一下就可以看到
arguments[0]這個0就相當于arguments的一個屬性,跟obj[attrName]是一樣的
arguments[0]()就跟調用obj[attrName]一樣,這時候fn里面的this就指向arguments了
這樣就能理解后一個為什么是1了

查看完整回答
反對 回復 2018-08-05
  • 2 回答
  • 0 關注
  • 1082 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號