Разбиваете строку например с помощью split, если вы уверены что строка всегда будет приходить валидная, получаете массив названий вложенных пространств иен. Затем начиная от корня пространства имен (если notes и store - глобальны, то это window) начинаете добираться до вашего метода и потом его вызываете.
var str = "my.deep.deep.namespace.and.method";
var pkgs = str.split("."), // Если вы не уверены что строка 100% валидная, то надо парсить регуляркой и проверять лишние точки, точки в начале, в конце и прочее, но думаю это лишнее
root= window;
for (var i = 0, l = pkgs.length; i < l; i ++) {
root = root[pkgs[i]]; // Тут не плохо бы проверять, есть ли на этом месте объект
}
root();
Это был грубый пример. Если вы себе сами пишете эти методы и сами себе присылаете строки, то есть вам не подсунут зловещий код 100%, пользуйтесь eval, почему нет..