Javascript-将值传递给回调
我有这个JS代码。我需要将loadItemUrl值传递给回调函数off loadStruct方法。loadStruct是我们正在使用的JS框架的一个函数 在本例中,loadItemUrl值未在回调函数的内部范围中定义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
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