通过引用传递参数

时间:2011-08-30 16:51:58

标签: javascript function reference arguments

我有以下 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的新参数?

2 个答案:

答案 0 :(得分: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 } );

答案 1 :(得分:0)

将功能更改为:

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

并通过以下方式调用该函数:

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

您将传入对myNamespace的引用(在函数中将被称为nameSpace)。 您可以访问所有myNameSpace的属性(并可以为其分配内容)。