Javascript 为什么页面加载上设置的变量在document.ready范围内不可用?

Javascript 为什么页面加载上设置的变量在document.ready范围内不可用?,javascript,jquery,variables,scope,Javascript,Jquery,Variables,Scope,我有一个包含的javascript文件,它初始化了一个名为“widgets”的空数组对象 在同一个示例中,定义了一系列功能原型,以向小部件添加小部件信息: Widget.prototype.addWidgetInfo(a,b,c){ this.info.a = a; this.info.b = b; ... } 还有许多函数支持文件末尾的document.ready(){}块 在页面主体中,对于输出的每个小部件,都会输出一行js,并调用这个原型函数 Widgets[id] = new W

我有一个包含的javascript文件,它初始化了一个名为“widgets”的空数组对象

在同一个示例中,定义了一系列功能原型,以向小部件添加小部件信息:

Widget.prototype.addWidgetInfo(a,b,c){
 this.info.a = a;
 this.info.b = b;
 ...
}
还有许多函数支持文件末尾的document.ready(){}块

在页面主体中,对于输出的每个小部件,都会输出一行js,并调用这个原型函数

Widgets[id] = new Widget();
Widgets[id].addwidgetInfo("bla","bla","bla");
然而,当DocumentReady调用时

Widgets[id]。信息是一个空数组


我搞不懂为什么地球上没有这些数据!请帮助

给出的示例中有一些错误。我不确定这是您的问题,还是您的示例中的问题:

  • addWidgetInfo
    未正确声明。应该是:

    Widget.prototype.addWidgetInfo = function(a,b,c){
    
  • 此.info
    未初始化。应该是

    Widget.prototype.addWidgetInfo = function(a,b,c){
        this.info = {};
        this.info.a = a;
        ...
    }
    

好的,这是我的例子。我没有把所有的东西都放进去=/
Widget.prototype.addWidgetInfo = function(a,b,c){
    this.info = {};
    this.info.a = a;
    ...
}