Можно как-то вызывать определенный метод при обращении к несуществующему свойству?
Суть такая - есть объект с данными, скажем App.Data - каждый здесь ключ, это определенный набор данных. Однако при загрузке их еще нет - их нужно будет догрузить в процессе работы. Однако некоторые из наборов могут не понадобиться и грузить все сразу не резон.
Но хотелось бы чтобы контроллеры читали данные просто так: var MyData = App.Data['my_data'].
Есть ли какой-нибудь трюк, позволяющий вызывать метод если свойство не определено, чтобы он подгрузил эти данные в App.Data['my_data'] и вернул их?
Сразу скажу - догрузка синхронная, это не ajax вообще - данные уже есть в странице, просто их надо распарсить и запихать в App.Data['my_data'].
Я понимаю что в таких случаях нужно бы использовать гетер, но может можно как-то красивее?
На сегодня только геттерами такое реализуемо.
В скором времени должны появиться Proxy, там можно будет перехватывающие геттеры реализовывать, когда заранее набор свойств объекта неизвестен
Ну я написал в конце что понимаю что так и нужно и сам до сих пор так делал, но вот задался вопросом - нет ли какого-нибудь трюка, чтобы геттер сам срабатывал если данных нет.
Александр Маджугин: ну геттер же должен что-то делать. JS не знает за вас, что вы хотите подгрузить. Может где-то на просторах есть дополнение к jquery массивам для таких случаев.
romy4: не - я расчитывал на то, что объекту можно добавить какой-нибудь волшебный метод типа __readundefprop(name), который срабатывает каждый раз при попытке доступа к несуществующему свойству объекта. Видимо зря...
romy4: да, точно - я потому и спросил, что помню что где-то видел нечто подобное. Тут правда надо заранее знать имена свойств, но это уже гораздо лучше чем ничего!