Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   объекты и работа с ними (https://javascript.ru/forum/misc/62277-obekty-i-rabota-s-nimi.html)

protoquest 02.04.2016 22:22

Cache,
Вас вообще не в ту степь прет. это почти то же самое, что
obj.showF = function(m){alert(obj.func[m])}

protoquest 02.04.2016 22:25

Цитата:

Сообщение от Cache
а можно по конкретней, почему через "жопу"?

ладно, дело ваше, может найдется задача, где это Вам действительно понадобится.

Cache 02.04.2016 22:40

protoquest,
как же сказал выше - только учусь, и ООП - для меня темный лес...
Суть задачи, хочу обойтись без switch при обработке ответа от сервера, имеющего вид:
Код:

KEY_VALUE
или
KEY_VALUE_SUBVALUE

где KEY - критичность сообщения
VALUE и SUBVALUE - подробности
например:
ERROR_SQL или BAD_KEY

в зависимости от этого, хочу вызывать нужную функцию, например, при BAD_KEY нужно вызвать showMsg() с сообщением об ошибке введенного ключа, аналогично при других ошибках с ключом BAD_
а при ERROR_SQL - нужно запустить функцию-таймер, которая повторит запрос по окончании таймера

плюс как-то упорядочить обращение к объекту с сообщениями

вот и ломаю голову, как же это сделать

protoquest 02.04.2016 22:48

Cache,
основные кейзы ООП -- это наследование полиморфизм и инкапсуляция. Это средство проектирования, совместного, повторного использования кода, средство метапрограммирования. В твоем же случае, абсолютно похрену, как ты обработаешь ответ, со свитчем или без него, зря ты мучаешься. Использовать ООП ради самого ООП не нужно. Хотя, в контексте освоения механизмов, может это и будет для тебя полезно, просто для отработки навыков.

Cache 02.04.2016 23:00

protoquest,
ясн, спасибо

protoquest 02.04.2016 23:00

Cache,
хотя, если я правильно тебя понял, то что ты говоришь, можно реализовать в объектном стиле, только не так как ты задумал, а как-то вот так
var request = {
  KEY_VALUE: function(){alert(1)},
  KEY_VALUE_SUBVALUE: function(){alert(2)},
  handler: function(string){
    this[string]()
  }
}

request.handler("KEY_VALUE")

это замена свитч

Cache 02.04.2016 23:14

protoquest,
спасибо, подумаю над таким решением

Cache 02.04.2016 23:23

разве что, подобный подход, слишком упрощенный, т.к. showMsg() это не просто вызов alert(), но и выполнение некоторых операций, связанных с данным событием, и не всем событиям - требуется именно эта функция, по этому и требовалась ссылка именно на функцию, т.е. чтобы в зависимости от KEY - можно было бы указать обработчик (функцию) ..... как-то так

protoquest 03.04.2016 10:33

Цитата:

Сообщение от Cache
т.е. чтобы в зависимости от KEY - можно было бы указать обработчик (функцию) ..... как-то так

то что я Вам привел как раз это и делает

protoquest 03.04.2016 10:38

Цитата:

Сообщение от Cache
это не просто вызов alert(), но и выполнение некоторых операций, связанных с данным событием

туда вместо алерта можно впихнуть все что угодно. У тебя действительно ступор какой-то с ООП.


Часовой пояс GMT +3, время: 02:52.