有没有办法在javascript中获取对象的范围?

时间:2010-09-10 00:00:48

标签: javascript debugging

是否有可以使用的属性或Web工具,以便我可以在运行时评估两个javascript对象的范围?

3 个答案:

答案 0 :(得分: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 :(得分:2)

在Opera Dragonfly(开发人员的工具)中,您可以在对象范围内设置断点,并查看该范围内可用的变量,方法和对象。我不知道它在其他浏览器的工具(WebKit JavaScript控制台,FireBug)中是怎么回事,但我认为其机制类似。

答案 2 :(得分:1)

是的,我使用MS Visual Studio来观察范围的变化。正常我看这个关键字