Javascript 如何将对象保持在范围内?

Javascript 如何将对象保持在范围内?,javascript,jquery,object,scope,Javascript,Jquery,Object,Scope,我正在实现以下功能。页面的大部分在我的entryPage.php文件中创建一次。“Stage”表是通过对stageArea.php的AJAX调用创建的。我的问题是,我的数据对象是在$(document).ready(function(){…}中创建的,它不能被$(document).ready(function(){…}之外的其他函数访问 entryPage.php …HTML。。。 $(文档).ready(函数(){ var dataObject=new DataEntryObj();//创建

我正在实现以下功能。页面的大部分在我的entryPage.php文件中创建一次。“Stage”表是通过对stageArea.php的AJAX调用创建的。我的问题是,我的数据对象是在
$(document).ready(function(){…}
中创建的,它不能被
$(document).ready(function(){…}
之外的其他函数访问

entryPage.php

…HTML。。。
$(文档).ready(函数(){
var dataObject=new DataEntryObj();//创建数据对象
$.post(“../stageArea.php”,{array:dataObject.dataArray},函数(数据){
$('#stageArea').html(数据);
});
}
var DataEntryObj=函数(){
this.dataArray=[[0,0,0,0,0,0,0,3,0]];
....
}
函数updateData(值、行、索引){
警报(“更新:“+行+”+索引+”+值);//值正常
警报(dataObject.dataArray[row][index]);//但数据对象不在这里
dataObject.dataArray[row][index]=value;//因此无法分配此值
$.post(“../stageArea.php”,{array:dataObject.dataArray},函数(数据){
$('#stageArea').html(数据);
});
}

将对象保持在与其他函数相同的范围内的好方法是什么?

只需在
$(文档)之外声明
var
。准备好
,然后不使用
var

var dataObject ;
$(document).ready(function() { 

    dataObject = new DataEntryObj(); // create the data object
    ......

});

这现在相当于
窗口。dataObject

您可以定义一个全局变量,但是您应该确保
updateData
在DOM变得可访问后尝试访问
dataObject

var dataObject, DataEntryObj;

DataEntryObj = function(){
  this.dataArray = [[0,0,0,0,0,0,0,3,0]];
}

$(document).ready(function() {

  dataObject = new DataEntryObj();

  $.post("../stageArea.php", {array : dataObject.dataArray}, function(data){
    $('#stageArea').html(data);
  });

}

function updateData(value, row, index) {
   // will have ref to dataObject changed by $(document)
}

您不能访问dataObject变量。因为您在函数中设置了。您应该创建一个全局对象变量,并且可以访问任何地方

var dataObject = { data: null };

$(document).ready(function() { 

    dataObject.data = new DataEntryObj(); // create the data object

    $.post("../stageArea.php", {array : dataObject.data.dataArray}, function(data){
        $('#stageArea').html(data);
    });
  }
  var DataEntryObj = function(){
    this.dataArray = [[0,0,0,0,0,0,0,3,0]];
  }

  function updateData(value, row, index){

    alert("update:" + row + " " + index + " " + value);
    alert(dataObject.data.dataArray[row][index]);  
    dataObject.data.dataArray[row][index] = value;

    $.post("../stageArea.php", {array : dataObject.data.dataArray}, function(data){
         $('#stageArea').html(data);
    });
}

$(document).ready(function(){})
缺少结束
?在
.ready()之前调用的
更新数据在哪里
event?这给了我以下控制台错误:未捕获类型错误:DataEntryObj不是一个函数那么您可能在另一个函数中包含了
DataEntryObj
函数声明。在作用域可用性方面,函数与变量相同
var dataObject = { data: null };

$(document).ready(function() { 

    dataObject.data = new DataEntryObj(); // create the data object

    $.post("../stageArea.php", {array : dataObject.data.dataArray}, function(data){
        $('#stageArea').html(data);
    });
  }
  var DataEntryObj = function(){
    this.dataArray = [[0,0,0,0,0,0,0,3,0]];
  }

  function updateData(value, row, index){

    alert("update:" + row + " " + index + " " + value);
    alert(dataObject.data.dataArray[row][index]);  
    dataObject.data.dataArray[row][index] = value;

    $.post("../stageArea.php", {array : dataObject.data.dataArray}, function(data){
         $('#stageArea').html(data);
    });
}