如何在JavaScript中使用它创建的函数之外引用自定义对象?

时间:2010-06-03 10:03:40

标签: javascript jquery

我目前正在使用JavaScript和jQuery。

我有一个函数,在文档准备就绪后执行,在里面我创建包含各种属性的对象。

在同一个函数中,我可以访问这些新对象的属性没有问题,但是一旦我在一个不同的函数中,我似乎无法正确引用它们,因此无法访问它们内部的对象或信息。

将在不同函数中创建的对象的属性引用到寻找信息的对象的正确方法是什么?

4 个答案:

答案 0 :(得分:2)

通常,您无法引用在其他函数中创建的对象。范围规则不允许这样做。

但是,如果在主JQuery ready函数内创建子函数,则可以将对象创建为ready函数的局部变量,并在其他函数中使用它们。

这将创建一个闭包,允许变量仍然存在但不在全局范围内。

这样的事情:

$(function () {
    var MyObj = {"CT":0};
    function Inc(){
      MyObj.Ct++;
    }
    $("INPUT[type=button]").click(Inc);
})

答案 1 :(得分:1)

创建对函数外部对象的全局引用,例如:

var obj;

function func1()
{
   obj = 1;
}

function func2()
{
   alert(obj);
}

答案 2 :(得分:0)

最好的方法是创建一个包含所有数据的全局对象。

var myGlobalData = function(){
    // private data
    var some = 'data',
        foo  = 'bar';

    // public
    return {
        publicfunction: function(){
           alert(foo);
           return(some);
        }
    }      
};

在准备好的代码中,您可以创建该

的实例
$(document).ready(function(){
     var myData = new myGlobalData();
     myData.publicfunction();
});

请注意,在此示例中,您无法使用

访问'some'和'foo'
myData.foo = 'bar'; // not possible

因为那些对象是“私有的”。如果你以这种方式写一个对象,你 可以模拟更多的OOP风格。

答案 3 :(得分:0)

  

我有一个执行一次的功能   文件准备好了,在里面   我正在创建包含的对象   各种属性。

将这些对象定义为全局对象(window)的属性,你会没事的。

function onready() {
  window.myObject = {};
}

function otherFunction() {
  window.myObject.fu = "bar";
}