| 
 Помогите с видимостью 
filter = {
  cache : {},
  type : '',
  init : function ( type ) {
     this.type = type;
     // Данные не закешированы
     if ( typeof this.cache[this.type] == 'undefined' ) {
        // Пошел jQuery post
        $.post('page.php',null,function(data){
           filter.updateCache ( data, filter.init );
        },'json');
     }
  },
  updateCache : function ( data, callback ) {
     this.cache[this.org] = new Array();
     for (var i in data) if (data.hasOwnProperty(i)) {
        this.cache[this.type].push( data[i] );
     }
     callback( this.type );
  }
}
window.onLoad=function() { filter.init('one'); }
Помогите разобраться. Я тут вкратце свой код привел. Работу с объектами в JS только сегодня начал осваивать. Я хочу данные, получаемые в JSON через jQuery.post(), закешировать в объекте filter.cache , в дальнейшем загружать не через AJAX, а из объекта. Так вот после вызова `callback( this.type );` `this.cache` становится `undefined`. Ну и если подскажите более удачное решение, будет круто :) | 
| 
 Сколько заплатите? | 
| 
 
filter=function(type){
	this.init(type);
}
$.extend(filter.prototype,{
	cache:{},
	type:'',
	init : function ( type ) {
		this.type = type;
		cache = this.cache;
		if ( typeof this.cache[this.type] == 'undefined' ) {
			$.getJSON(
				'page.php',
				function(resp){
					cache[type]=resp;
				}
			)
		}
	},
})
window.onLoad=function() { new filter('one'); }
Возможны ошибки. Писал с головы. Работоспособность не проверял. Но как идея думаю сгодиться. Функция getJSON возвращает JSON уже в "нужном виде". Т.е. не нужно прогонять через eval()/ | 
| 
 2Gozar: 0 рублей 00 копеек. 2MaxB: С распознанием JSON у меня проблем никаких. Не пойму почему this.cache из объекта становится undefined. | 
| 
 Цитата: 
 http://javascript.ru/tutorial/object/thiskeyword | 
| Часовой пояс GMT +3, время: 01:13. |