在我们的应用程序中,我们正在缓存一些常用数据。最近我们为我们的网络应用程序开发了一个jquery插件。一些插件方法需要访问应用程序缓存。 我试图访问缓存,结果是未定义的。
例如:
申请类
Application(){
cachedObjects = {};
}
<body>
$(function(){
Application();
});
插件:
(function( $ ){
var methods = {
initialize : function( options ) { },
getDataFromCache : function() {
var data = Application.cachedObjects.someObject;// Here, data is undefined.
}
};
$.fn.menuPlugin = function( method ) {
if ( methods[method] ) {
return methods[ method ].apply( this, Array.prototype.slice.call( arguments, 1 ));
} else if ( typeof method === 'object' || ! method ) {
return methods.initialize.apply( this, arguments );
} else {
}
};
})( jQuery );
如何访问这些应用程序对象?
任何建议都会令人感激。
谢谢!
答案 0 :(得分:2)
这里有很多问题。首先,您定义一个没有function
关键字的函数。其次,您在没有cachedObjects
关键字的情况下声明var
,因此它变为全局关键字。我想你的意思是
function Application(){
var cachedObjects = {};
}
在任何情况下cachedObjects
只会是Application
内的局部变量,而不是Application
对象的属性(恰好是函数)。
您可以使用
以更简单的方式声明Application
对象
var Application = {
cachedObjects: {}
};
在任何情况下,如果您正在开发jQuery插件,则不应创建全局变量Application
;您可以使用插件的本地变量,如
(function($) {// All the definition of your plugin goes in this function
var Application = ...
})(jQuery);
或将缓存的数据存储在闭包中。