2010-08-22 35 views
1

像往常一樣,我來這裏後,測試了幾個小時,沒有任何線索我做錯了;-)我不是一個JavaScript專家,所以我想這會導致一些滾動的眼睛;-)對不起。我現在正處於一個以更可讀的方式編寫代碼的地步。功能分隔條件在班等等...我想要實現的是這樣的:問題傳遞參數與JavaScript的eval函數...我做錯了什麼?


modules.create( 'streamModule', 'leftColumn')
它將調用
streamModule.create ()


現在我沒有得到的東西的工作:
調用modules.create('streamModu le','leftColumn')總是結果
參考錯誤:leftColumn未定義 ???
呼叫中的ID:eval(type +「。create(」+ id +「,」+ target「)」);總是正確傳遞,但目標參數不是?我究竟做錯了什麼?

任何幫助將非常非常感激!!!!!謝謝!

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') 

回答

2

爲什麼你需要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); 
+1

+1,只是打字類似的東西我自己。使用* eval()*的第一條規則是你應該避免使用它。 – 2010-08-22 10:18:41

+0

因爲我得到:type.create()不是一個函數...? 已經嘗試過:-( – Bosh 2010-08-22 10:19:25

+0

SORRRY ..我是這樣一個延遲....用字符串調用它...使用modules.create(streamModule,'leftColumn');作品... SORRY – Bosh 2010-08-22 10:21:44

相關問題