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

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

重寫jQuery函數失去了'this'范圍

重寫jQuery函數失去了'this'范圍

慕田峪7331174 2021-04-13 17:14:44
我正在嘗試從另一個問題中實現以下答案:https://stackoverflow.com/a/26469105/2402594基本上,我需要向jQuery函數添加額外的檢查。以下代碼在jQuery庫中:但是我無法修改原始的jQuery,因此我在一個單獨的文件中創建了一個補丁。我正在做的是覆蓋find函數并添加功能,如下所示:(function() {var originalFind = jQuery.fn.find;jQuery.fn.find = function () {    try {        document === document;    }    catch (err) {        document = window.document;    }    return originalFind.apply(this, arguments); };})();該函數已正確覆蓋,但是,當代碼調用“ find”時,我的“ try”在應有的情況下不會引發任何異常,因為作用域與Sizzle函數中的作用域不同,因此原始問題仍然存在。我也嘗試過復制所有的Sizzle代碼,添加修改并如上所述將其分配給jQuery.fn.find,但是范圍問題仍然存在,并且會發生崩潰。我需要先設置“文檔”,然后才能進行以下檢查,否則由于權限被拒絕而崩潰:我如何共享范圍,以便可以正確完成try / catch?可能嗎?還有其他想法嗎?
查看完整描述

1 回答

?
呼喚遠方

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

眾所周知,JavaScript具有函數作用域:每個函數都創建一個新作用域。范圍確定這些變量的可訪問性(可見性)。從函數外部無法訪問(可見)在函數內部定義的變量。

因此,如果文檔是在JQuery庫函數中定義的,我認為您將無法訪問它。您可以嘗試定義一個全局變量來存儲文檔,然后可以在JQuery庫函數和重寫函數中對其進行訪問。


查看完整回答
反對 回復 2021-04-15
  • 1 回答
  • 0 關注
  • 169 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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