从Chrome开发工具访问变量(js命名空间)

时间:2013-12-27 04:59:33

标签: javascript namespaces meteor

我正在做关于Meteor的教程,很早就遇到了从我的开发工具控制台访问变量“lists”的问题(也发生在Firefox中)。

显然Meteor将主要的js文件包装在一个匿名的自我实例化函数中,这很酷,因为否则我自己可能会这样做,但似乎我无法从浏览器访问此函数的属性,除非我暂停函数完成前的代码。

我在教程中很早,所以我基本上只是设置了一个新项目并添加到一个集合中,但无法访问它以开始填写任何演示数据。以下屏幕截图应概述问题。如果我在第22行放置断点,我将能够访问该集合。

我最近在另一个项目中遇到了同样的问题,即使它在我看其他人的项目时看起来也在做同样的事情,所以也许只有一些我缺少的细节?

enter image description here

(如果你感兴趣我正在使用Isaac Strack出版的“流星入门”一书中的第一个教程。这个确切的代码可以在他的书中使用,顺便说一下)

2 个答案:

答案 0 :(得分:1)

为什么您希望以在控制台中尝试的方式访问lists

当封装函数(包装代码的函数)退出时,lists无法以任何方式使用 - 它位于所有其他包装函数 closure 中,因此它们的代码可以访问它,这应该是整个目的。

然而,从“外部”世界“隐藏”到任何不在同一范围内的代码,在这种情况下是包装函数的范围。

在第22行放置断点会停止执行并“让你”进入包装函数范围,这就是为什么在这种情况下你可以看到lists

答案 1 :(得分:1)

您可以在函数中设置window属性,以便随时访问。

var lists = yadayadayada;
window.lists = lists;

然后,您将能够在开发工具控制台中看到lists