2012-12-18 107 views
1

我知道在JavaScript中,您可以爲函數添加額外的參數。例如;將額外參數傳遞給Javascript中的可調用對象

function sum(){ 

var result = 0; 
for(var i = 0;i<arguments.length;i++){ 
    result += arguments[i]; 
} 
return result; 
} 

然後撥打sum(1,2,3,4)。現在我正在使用Phonegap,我想將額外參數傳遞給可調用對象。 (做類似於我以前解釋的東西。)

在PhoneGap的,你可以通過做這個訪問文件系統:

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, success, fail); 
function success(fileSystem){ 
//Do something 
} 

是否有可能做一些類似這樣的東西嗎?

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, success(option1, option2), fail); 
    function success(fileSystem){ 
    //Do something 
     if(option1 > option2){ 
     //Do something even interesting 
     } 

    } 

因爲我是新來的Javascript和Phonegap我不確定是否有可能做這樣的事情。我想避免使用全局變量

+0

你想達到什麼樣的實際? – zerkms

+0

將額外的參數傳遞給函數成功。或者做類似的事情 – jsaye

回答

5
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem) { return success(fileSystem, option1, option2); }, fail); 
    function success(fileSystem, option1, option2){ 
    //Do something 
     if(option1 > option2){ 
     //Do something even interesting 
     } 

    } 

m?

+0

謝謝,好像這就是我想做的事情,我會試一試並儘快回覆你。 – jsaye

+0

@jsaye你仍然需要全局變量... –

+0

@蒂姆S .:不。 'option1'可能是封閉的 – zerkms

1

也許你可以不喜歡它封裝所有的功能

function doFileSystemStuff(option1,option2){ 
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, success, fail); 
    function success(fileSystem){ 
     //Do something 
     if(option1 > option2){ 
     //Do something even interesting 
     } 
    } 
} 

然後用option1option2

+0

這是一個非常不錯的解決方案,但我想做一些類似於@zerkms的事情。對不起,我的問題可能不夠清楚。 – jsaye

0
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, 
function(option1, option2){ success(option1, option2)}, fail); 
function success(fileSystem){ 
//Do something 
    if(option1>option1){ 
    //Do something even interesting 
    } 

} 
0

最有可能不approproiately調用它。

您的成功處理程序在函數requestFileSystem中調用。我的猜測是該函數不包含任何其他參數。

既然你不想使用全局變量,有一個在中間的解決方案:把一切都放在一個函數:

(function() { 
    var option1 = 0, option2 = 1; 

    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, success, fail); 

    function success(filesystem) { 
     console.log(option1, option2); // will display 0 and 1 
    } 
})(); // calls itself 

console.log(option1, option2); // undefined 

這樣,你仍然可以設置option1和`選項2,訪問它們在你的方法,而不使它們成爲全局的!

+0

爲什麼你不把所有東西封裝到一個對象中? – cpoDesign

0

做這樣的:

function getFileSystem() { 

    //set your option1, option2 
    var option1 = 1, option2 = 2; 

    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fileSystem) { 

     //Do something 

     function innerSuccess(fileSystem, option1, option2) { 
     //Do something even interesting 

     } 
    }, fail); 

} 
相關問題