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

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

窗口對象屬性行為

窗口對象屬性行為

慕妹3242003 2023-08-24 17:53:53
當我們有普通的 javascript 對象時,我們可以使用類似objectName.proprtyName. 如果我們只使用propertyName,那么我們會得到如下錯誤 -const myObj = {  userIdName : "John"};console.log(myObj.userIdName); //Johnconsole.log(userIdName); //error "Not defined"但是,在內置window對象的情況下,我們可以同時使用window.propertyName和 ,propertyName如下所示 -console.log(window.alert);console.log(alert);//both return same result究竟是什么導致了window對象的這種行為?我們可以為任何顯式構建的對象(如第一個片段中的對象)復制相同的行為嗎?(雖然沒有人愿意污染全局范圍,但我只是有這個查詢)編輯- 我收到評論說這個問題是另一個問題的重復。這個問題與我的答案非常相似,除了一個區別 - 我正在尋找一種方法來復制對象的相同的全局可訪問行為window。
查看完整描述

1 回答

?
RISEBY

TA貢獻1856條經驗 獲得超5個贊

究竟是什么導致了window對象的這種行為?

JavaScript 有兩種主要類型的環境記錄(“保存”名稱 -> 值關聯的構造):聲明性記錄和對象記錄。

聲明性環境記錄以特定于實現的方式存儲這些關聯。這是最常見的環境記錄類型,例如在調用函數時創建。

正如名稱所示,對象環境記錄使用實際的 JavaScript 對象作為“后端”?。這意味著該環境中的每個條目都成為該“綁定對象”的屬性,反之亦然。

全局環境使用這樣的對象環境,并且該綁定對象可通過window瀏覽器使用。

我們可以為任何顯式構建的對象(如第一個片段中的對象)復制相同的行為嗎?

with不推薦使用的語句可能仍然存在,并使用提供的對象作為綁定對象創建對象環境記錄。從規格來看:

with語句將計算對象的對象環境記錄添加到正在運行的執行上下文的詞法環境中。然后它使用這個增強的詞法環境執行一條語句。最后,它恢復了原始的詞匯環境。

var obj? = {foo: 42};

with (obj) {

? console.log(foo);

}


查看完整回答
反對 回復 2023-08-24
  • 1 回答
  • 0 關注
  • 201 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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