2014-12-21 78 views
-4

我從某個地方讀到,絕對不可能獲得對作用域的引用。是否有任何黑客獲得對範圍的引用,並將其「陷」到變量中?黑客獲取範圍的參考?

編輯:

我知道我可以通過window對象獲得全局範圍。我指的是動態創建函數的範圍,所以第四。

+1

太模糊了沒有例子的問題。範圍/關閉不是一個簡單的概念 – charlietfl

+1

除了JavaScript引擎的原生擴展之外,沒有。目前沒有主要引擎提供[詞彙環境](http://www.ecma-international.org/ecma-262/5.1/#sec-10.2)或[環境記錄](http:// www。 ecma-international.org/ecma-262/5.1/#sec-10.2.1)轉換爲JavaScript代碼。 –

+1

相關:[參考一個函數本地範圍作爲對象](http://stackoverflow.com/questions/2600361/javascript-reference-a-functions-local-scope-as-an-object) –

回答

0

引用windows對象/全局範圍內變量可以是這樣的。在這裏,我假設你是在全球範圍內

var reftowindows = this; 

我指的是動態創建的功能範圍等 第四。在全局範圍

function returnRefrence(){ 
var refvar = this; 
return this; 

} 

定義調用函數返回變量保持refrence到window作爲範圍

console.log(returnRefrence()); // console logs "window" object 

調用與呼叫功能()並綁定到對象

功能的改變的範圍和作爲範圍返回變量保持參考obj

obj = {}; 
console.log(returnRefrence.call(obj)); // console logs "obj" object 
+0

'this' won' t是嚴格模式下的全局對象。 – Oriol