2010-09-10 92 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