Проблема передачи параметров с помощью функции javascript eval ... Что я делаю не так? - PullRequest
1 голос
/ 22 августа 2010

как обычно, я прихожу сюда после нескольких часов тестирования, не имея ни малейшего представления о том, что я делаю неправильно ;-) Я не эксперт по javascript, поэтому я полагаю, что это вызовет некоторые подвижные глаза ;-) Извините.Сейчас я нахожусь в точке, где я пытался написать что-то более понятным способом.Разделение функций в классах и т. Д. Что я хочу достичь, это примерно так:


modules.create ('streamModule', 'leftColumn')
, которая будетcall
streamModule.create ()


ТЕПЕРЬ, ЧТО Я НЕ МОГУ РАБОТАТЬ:
Вызов modules.create ('streamModule', 'leftColumn') всегда приводит к
Ошибка ссылки: leftColumn не определен ???
Идентификатор в вызове: eval (type + ". Create (" + id +)" "+ мишень")") ;всегда передается правильно, но целевой параметр не является ???Что я делаю не так?

Любая помощь будет очень признателен !!!!!Спасибо!

var modules = {
    _map    : [],

    create: function(type,target) {

    if(type == undefined) return false;
    if(target == undefined) return false;

    //Store id in map
    this._map.push(id = createID());

    //Call create function of module
    eval(type +".create("+id+","+target")");
    }
}

[...]

var streamModule = {

create: function() {
    $.log(target)
   }
}

[...]

modules.create('streamModule','leftColumn') 

1 Ответ

2 голосов
/ 22 августа 2010

Зачем вам вообще нужно eval?

var modules = {
    _map    : [],

    create: function(type,target) {

    if(type == undefined) return false;
    if(target == undefined) return false;

    //Store id in map
    this._map.push(id = createID());

    //Call create function of module
    type.create(id, target);
}

[...]

var streamModule = {

   create: function(id, target) {
    $.log(target)
   }
}

[...]

modules.create(streamModule, leftColumn);
...