如何在使用JavaScript创建的函数之外引用自定义对象?
我目前正在使用JavaScript和jQuery。
我有一个函数,一旦文档准备好就会执行,在里面我创建包含各种属性的对象。
在同一个函数中,我可以访问这些新对象的属性没有问题,但是一旦我在一个不同的函数内部,我似乎无法正确引用它们,因此无法访问它们内部的对象或信息。
将在不同函数中创建的对象的属性引用到寻找信息的对象的正确方法是什么?
通常,您不能引用在不同函数中创建的对象。 范围规则不允许这样做。
但是,如果在主JQuery ready函数内创建子函数,则可以将对象创建为ready函数的局部变量,并在其他函数中使用它们。
这将创建一个闭包,允许变量仍然存在但不在全局范围内。
像这样的东西:
$(function () { var MyObj = {"CT":0}; function Inc(){ MyObj.Ct++; } $("INPUT[type=button]").click(Inc); })
创建对函数外部对象的全局引用,例如:
var obj; function func1() { obj = 1; } function func2() { alert(obj); }
最好的方法是创建一个包含所有数据的全局对象。
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样式。
我有一个函数,一旦文档准备好就会执行,在里面我创建包含各种属性的对象。
将这些对象定义为全局对象( window
)的属性,您就可以了。
function onready() { window.myObject = {}; } function otherFunction() { window.myObject.fu = "bar"; }