Показать сообщение отдельно
  #1 (permalink)  
Старый 02.10.2012, 18:35
Интересующийся
Отправить личное сообщение для amt779 Посмотреть профиль Найти все сообщения от amt779
 
Регистрация: 01.07.2011
Сообщений: 10

Реализация ООП
Пытаюсь на javascript запрогать cpp-подобный объект.
В объекте должна быть переменная, методы для записи и чтения для этой переменной.

Получилась примерно вот такая структура:
function JsonTable(){
	this.dataArray = [];
	this.sort = {
		state : {
			direction : {
				v	: 1 //	1,true,'asc','ASC': ASC, |*:DESC
				,set: function(v){
					var self = this;
					if("asc"==v || "ASC"==v || true===v || 1==v)this.sort.state.direction.v = 1;
					else this.sort.state.direction.v = -1;
				}
				,get: function(){
					return this.sort.state.direction.v;
				}
				,getReadeble: function(){
					if (1==this.sort.state.direction.get()) return 'ASC';
					return 'DESC';
				}
			}
		}
	}
}

Когда создаю экземпляр данного класса. При создании экземпляра компилятор Firefox15 не ругается
var sortDirection = 'ASC';
var o = {
	// табличные данные, а так же параметры работы с ними храняться в глобальном json-объекте
	noticesData : new JsonTable()
};


Далее вызываю один из объявленных методов:
o.noticesData.sort.state.direction.set(sortDirection);


И тут получаю ошибку:
Код:
TypeError: this.sort is undefined
[Прерывать на этой ошибке] 	
else this.sort.state.direction.v = -1;
Отсюда вопросы:
1) Как правильно описать данный класс? Т.е. как описать класс JsonTable таким образом, чтобы при вызове метода o.noticesData.sort.state.direction.set(sortDirecti on), компилятор не ругался, а делал то, что должен?

PS
2) Правильно ли я понял следующее по поводу javascript
2.1) В javascript отсутсвуют модификаторы доступа, вроде protected, private, public в cpp. Т.е. я не могу в классе javascript указать, ограничения доступа на чтение и запись, для объекта класса? Напр. для переменной o.noticesData.sort.state.direction.v
2.2) Могу ли я в моем примере, каким-то образом, через ссылки на объекте сделать, чтобы при обращению к полю объекта o.noticesData.sort.state.direction, получать резульат выполнения метода o.noticesData.sort.state.direction.get() ?
Ответить с цитированием