2011-08-30 54 views
2

過去,我有以下的JavaScript功能:參數引用

function insertIntoTable(title, text, sketchFileName, categoryId) 
{ 
    var db = window.openDatabase('xxx', '1.0', 'xxx database', 5*1024*1024); 
    db.transaction(
     function (tx) { 
      if (sketchFileName == '') 
      { 
       tx.executeSql('INSERT INTO TableXXX (title, content, created, categoryID) VALUES (?, ?, ?, ?)', 
          [title, text, Date.now(), categoryId], 
          function (transaction, resultSet) { 
           if (resultSet.rowsAffected) { 
            myNameSpace.returnedId = resultSet.insertId; 
           } 
          }, handleSQLError); 
      } 
     }, handleSQLError); 
    ); 
} 

現在,我使用了一個全局變量,myNameSpace.returnedId,得到insertId。

有什麼辦法可以添加一個新參數到功能insertIntoTable那引用myNameSpace.returnedId

+0

爲什麼不只是用myNameSpace作爲參數調用函數? – Gerrat

+0

因爲我不知道它是如何工作的。 – VansFannel

+0

呵呵??如何運作?向該函數添加一個參數 - 將其稱爲myNameSpace或任何其他名稱,然後僅使用對象myNameSpace調用該函數。你可以訪問和修改任何屬性(如returnId)。 (不知道我是否理解你,但我添加了這個答案)。 – Gerrat

回答

1

你可以用兩個參數引用變量:

function insertIntoTable(title, text, sketchFileName, categoryId, nameSpace, variable) 
{ 
    ... 
    nameSpace[variable] = resultSet.insertId; 
} 

這樣稱呼它:

insertIntoTable(..., myNameSpace, 'returnedId'); 

的另一種方法是使用setter函數:

function insertIntoTable(title, text, sketchFileName, categoryId, setReturnedId) 
{ 
    setReturnedId(resultSet.insertId); 

} 

呼叫它是這樣的:

insertIntoTable(..., function(value){ myNameSpace.returnedId = value }); 
+0

我已經使用了第二個選項,它更通用且可重用。 – VansFannel

0

更改的功能如下:

function insertIntoTable(title, text, sketchFileName, categoryId, nameSpace) { 
... 
... 
nameSpace.returnedId = resultSet.insertId; // assign this here 

,並通過調用該函數:

insertIntoTable(someTitle, someText, someSketchFileName, someCategoryId, myNamespace) 

你會被傳遞到了myNameSpace參考(將被稱爲nameSpace函數內)。 然後您可以訪問所有myNameSpace的屬性(並可以爲其分配內容)。