Javascript-将值传递给回调

Javascript-将值传递给回调,javascript,Javascript,我有这个JS代码。我需要将loadItemUrl值传递给回调函数off loadStruct方法。loadStruct是我们正在使用的JS框架的一个函数 在本例中,loadItemUrl值未在回调函数的内部范围中定义 Form.prototype.Create = function (loadItemUrl) { var dhxForm = new dhtmlXForm(this.divId); dhxForm.loadStruct(this.url, function

我有这个JS代码。我需要将loadItemUrl值传递给回调函数off loadStruct方法。loadStruct是我们正在使用的JS框架的一个函数

在本例中,loadItemUrl值未在回调函数的内部范围中定义

Form.prototype.Create = function (loadItemUrl) {

     var dhxForm = new dhtmlXForm(this.divId);

     dhxForm.loadStruct(this.url, function () {

        if (loadItemUrl)
            this.load(loadItemUrl);

    });
}
在本例中,loadItemUrl值未在回调函数的内部范围中定义

Form.prototype.Create = function (loadItemUrl) {

     var dhxForm = new dhtmlXForm(this.divId);

     dhxForm.loadStruct(this.url, function () {

        if (loadItemUrl)
            this.load(loadItemUrl);

    });
}
我假设这是你的问题,在这种情况下答案是否定的。loadItemUrl参数的作用域是外部函数块的局部变量,因此可以从内部函数块访问

假设loadItemUrl参数正确地传递给Form.prototype.Create函数,那么您的代码应该可以正常工作

Form.prototype.Create = function (loadItemUrl) {

     var dhxForm = new dhtmlXForm(this.divId);

     dhxForm.loadStruct(this.url, function () {

        if (loadItemUrl)
            this.load(loadItemUrl);

    });
}
在本例中,loadItemUrl值未在回调函数的内部范围中定义

Form.prototype.Create = function (loadItemUrl) {

     var dhxForm = new dhtmlXForm(this.divId);

     dhxForm.loadStruct(this.url, function () {

        if (loadItemUrl)
            this.load(loadItemUrl);

    });
}
我假设这是你的问题,在这种情况下答案是否定的。loadItemUrl参数的作用域是外部函数块的局部变量,因此可以从内部函数块访问


假设loadItemUrl参数正确地传递给Form.prototype.Create函数,那么您的代码应该可以正常工作。

如果
loadItemUrl
未定义的
,那么这是因为您在调用它时没有将定义的值传递给
Form.Create

Form.prototype.Create = function (loadItemUrl) {

     var dhxForm = new dhtmlXForm(this.divId);

     dhxForm.loadStruct(this.url, function () {

        if (loadItemUrl)
            this.load(loadItemUrl);

    });
}

回调函数是在Create函数的作用域中定义的,因此它可以访问其中存在的任何变量。

如果
loadItemUrl
未定义的
,那是因为调用它时没有将定义的值传递给
表单。Create


回调函数是在Create函数的作用域中定义的,因此它可以访问其中存在的任何变量。

回调函数可以访问参数
loadItemUrl
,在这种情况下,回调函数将形成一个函数。但是,在匿名回调函数的执行上下文中,
this
的值完全由
loadStruct
的实现决定。解决这个问题的一种方法是进一步利用JS和do的闭包功能

var dhxForm = new dhtmlXForm(this.divId);
var self = this;

dhxForm.loadStruct(this.url, function () {

    if (loadItemUrl)
        self.load(loadItemUrl);
});

这将确保在正确的对象上调用
load

回调函数可以访问参数
loadItemUrl
,在这种情况下,回调函数将形成一个。但是,在匿名回调函数的执行上下文中,
this
的值完全由
loadStruct
的实现决定。解决这个问题的一种方法是进一步利用JS和do的闭包功能

var dhxForm = new dhtmlXForm(this.divId);
var self = this;

dhxForm.loadStruct(this.url, function () {

    if (loadItemUrl)
        self.load(loadItemUrl);
});
这将确保在正确的对象上调用
load