[英]Global Object name in Javascript
我正在使用的ERP具有允許我編寫Javascript以控制/調整事件流的功能。 在我的情況下,沒有“窗口”全局對象。
我需要在全局范圍內使用eval(),但缺少全局對象的名稱。 有辦法找出答案嗎?
我需要在全局范圍內使用eval()...
如果從字面上看,您需要在全局范圍內評估某些內容,則可以使用間接評估:
(0, eval)("your code here");
它看起來很奇怪,但是卻使eval
工作在全局范圍而不是局部范圍內進行。
var n; // A global `n` function direct() { var n; eval("n = 'a';"); console.log("Direct:"); console.log(" local n = " + n); console.log(" global n = " + window.n); } function indirect() { var n; (0, eval)("n = 'b';"); console.log("Indirect:"); console.log(" local n = " + n); console.log(" global n = " + window.n); } direct(); indirect();
...而我缺少全局對象的名稱。 有辦法找出答案嗎?
如果你正在運行在寬松模式下你的代碼,你可以通過調用一個函數,這將運行可以訪問全局對象this
引用全局對象。 所以:
var global = (function() { return this; })();
...為您提供了一個名為global
的變量,該變量引用了全局對象。 它在嚴格模式下不起作用,因為在嚴格模式下, this
函數中的此函數是undefined
。
它也完全有可能是你的代碼被稱為與this
已經引用全局對象,所以你可能檢查第一。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.