2010-09-10 127 views
1

是否有任何屬性可以使用或網絡工具,所以我可以在運行時評估兩個JavaScript對象的範圍?有沒有在javascript中獲取對象範圍的方法?

+5

你能詳細說明一下嗎? 「範圍」是什麼意思...?也許是你想要完成的一個小例子... – Shog9 2010-09-10 00:04:28

+1

你可能想閱讀這個:http://www.academa.si/?content=http://www.academa.si/html/articles/ js/professionalJavaScript/prototipesAndScopeChains.htm – 2010-09-10 00:18:30

回答

2

不在瀏覽器中。 Rhino JavaScript平臺允許您通過Java訪問範圍和上下文。

您需要訪問該範圍的目的是什麼?

如果您想要執行一段可訪問特定對象屬性的代碼,則可以始終使用evalwith(包含其性能缺陷)。

function exec(obj, func) { 
    with (obj) { 
     eval("("+func+")()"); 
    } 
} 

var actObj = { 
    annoying: function (txt) { 
     alert(txt); 
    } 
} 

// using it: 
exec(actObj, function() { 
    annoying("HEY THERE FRIEND ! !"); 
}); 

如果你想在一個特定的內容來執行代碼,如果沒有目標,只是定義範圍,你可以從外部執行內部功能。

例如:

var module = (function() { 
    var a = 2; 

    var peek = function (fn) { 
     eval("("+fn+")()"); 
    } 

    return { 
     peek: peek 
    } 
})(); 

module.peek(function() { alert(a); }); 
1

是的,我使用MS Visual Studio來觀察範圍的變化。正常我看看這個關鍵字

2

在Opera蜻蜓(開發者工具),你可以設置斷點的對象範圍內,看到的變量,方法,並以範圍的對象可用。我不知道它是如何在其他瀏覽器的工具(WebKit JavaScript控制檯,FireBug),但我認爲這種機制是相似的。

+0

它在所有瀏覽器中都非常相似。 – c69 2011-09-18 15:48:18

相關問題