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

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

關于作用域鏈的一個疑問?

關于作用域鏈的一個疑問?

明月笑刀無情 2018-08-11 15:13:36
var name = "The Window";var object = {name : "My Object",getNameFunc : function(){return function(){return this.name;};}};alert(object.getNameFunc()()); //"The Window"(在非嚴格模式下)"只會搜索到其活動對象",這個“活動對象”指的是什么?作用域鏈 他是個鏈條,從函數的內部變量對象一直到全局變量對象,“只會搜索到其活動對象為止”,為什么只搜索到活動對象就停止了呢?
查看完整描述

1 回答

?
Smart貓小萌

TA貢獻1911條經驗 獲得超7個贊

“活動對象”是ECMAScript 3中的說法,它是指進入某個函數時,為當前函數建立起來的一個環境。這個環境用來保存當前函數的參數、局部變量等。(按你題目中的描述,this、arguments也是保存在上面)它不一定是一個真實存在的對象,用戶代碼也無法直接訪問它,它只是一個規范中用于描述語義的虛擬概念。

換句話說,你可以認為你的函數的參數、局部變量等都是這個“活動對象”的屬性。

當前函數的活動對象,加上外部函數的活動對象,再加上外部的外部的函數的活動變量,...就構成了一個鏈表,即你說的“作用域鏈”。

當在函數中解析變量時,先查看當前活動對象上有沒有。如果沒有,再查看外部函數的活動對象。依次類推。直到找到為止。

但是,this、arguments對于函數一定是存在的,所以當然只需要查找到當前函數對象為止了。


查看完整回答
反對 回復 2018-09-23
  • 1 回答
  • 0 關注
  • 531 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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