Javascript / JQuery scope

Javascript / JQuery scope

本文关键字:scope JQuery Javascript      更新时间:2024-04-03

我在Javascript/Jquery中有几个函数,我将一个属性传递给一个函数,然后再传递给另一个函数。

我遇到的问题是,第一个函数中的属性已经填充,但第二个函数的属性填充不足。

ExecuteSQL: function (sql, onSuccess) {                
    try {
        if (this.Database != null) {
            this.Database.transaction(function (tx) {
                tx.executeSql(sql, [], function (d, r) {
                    if (this.onSuccess) this.onSuccess(r);
                });
            });
        }
        else {
            alert("Could not execute SQL, the database connection is closed.");
        }
    }
    catch (e) {
        alert("Failed to execute SQL," + e);
    }
},

onSuccess是ExecuteSQL作用域中的值,但在事务作用域中为空。

任何帮助都会很棒。

谢谢保罗。

在这种情况下,您可以执行以下操作:

function (d, r) { if (onSuccess) onSuccess(r); }

只是为了明确检查您可以执行的功能:

function (d, r) { if (typeof onSuccess === 'function') onSuccess(r); }

由于onSuccess是一个变量,它包含在函数ExecuteSQL的作用域中定义的函数引用,因此您可以在回调中按原样访问它,并且它不作为实例的属性关联,因此this.onSuccess不会为您获取任何内容(忽略this不是ExecuteSQL函数中的this这一事实)。