例如我有这样的代码:
$(function () {
var a = {
init: function () { ...
是否可以在Firebug中挂钩a
并在命令行中调用其方法?
答案 0 :(得分:1)
Firebug使用.%
通过command line提供关闭变量检查。当选中显示闭包选项时,它还会在DOM panel内显示它们。
关于闭包检查员如何工作的详细说明可以在Firebug wiki中找到:
答案 1 :(得分:0)
函数内部或闭包内部的变量不能直接从函数外部访问。
访问它们的唯一方法是,如果函数内部的代码提供了一种可公开访问的方法来检索特定数据,因为只有函数内部的代码才能访问它们。
如果这只是一个常规函数(不构成任何类型的闭包),那么该函数中的局部变量只是偶数" alive"在函数的生命周期中,函数完成执行后将被垃圾收集。
如果您只是尝试调试某些内容,可以在该函数内部设置一个断点,并且从该断点开始,您可以将一个全局变量设置为指向该函数内的a
之类的内容。然后使用全局变量引用稍后调用。这只是一个调试辅助工具,因为它在正常执行JS时不实用而不修改函数内部的代码。
答案 2 :(得分:0)
我需要在一段时间内对项目做类似的事情 - 我有一些私人价值观,我仍然需要从QUnit
测试中访问。
我的解决方案是这样的:
(function() {
var innerVars = {
myvar1: 1,
myvar2:
};
function myMethod() {
console.log(innerVars.myVar1);
}
// Make my return value.
var r = {
myMethod: myMethod
};
if (window.QUNIT_TEST_IN_PROGRESS) {
r.inner = innerVars;
}
return r;
}();
答案 3 :(得分:0)
您可以创建一个全局变量,并使其成为您要检查的变量的引用。
$(function () {
var a = {
init: function () { ...
// now make a global variable and reference 'a'
window.test_a = a;
然后在你的控制台中,你应该能够做到
test_a.init()
显然这只是用于调试目的,否则避免使用全局变量。