Javascript - 传递值到回调
问题描述:
我有这个JS代码。我需要将loadItemUrl值传递给loadStruct方法的回调函数。 loadStruct是我们使用的JS框架的一个功能。Javascript - 传递值到回调
在此示例中,未在回调函数的内部范围中定义loadItemUrl值。
Form.prototype.Create = function (loadItemUrl) {
var dhxForm = new dhtmlXForm(this.divId);
dhxForm.loadStruct(this.url, function() {
if (loadItemUrl)
this.load(loadItemUrl);
});
}
答
如果loadItemUrl
是undefined
那么这是因为您在调用它时未将定义值传递给Form.Create
。
回调函数是在Create函数的范围内定义的,所以它可以访问那里存在的任何变量。
答
在这个例子中是在回调函数的内范围未定义的loadItemUrl值。
我假设你的问题,在这种情况下,答案是没有。 loadItemUrl参数作为外部功能块的局部变量作用域,因此可从内部功能块访问。
你应该能正常运行的代码,假设loadItemUrl参数正确地传递给Form.prototype.Create功能。
答
参数loadItemUrl
将可供回调函数访问,在这种情况下,此函数将形成closure。但是,在匿名回调函数的执行上下文中,this
的值完全由loadStruct
的实现决定。解决这个问题的方法之一是采取JS的封闭能力进一步的优点,做
var dhxForm = new dhtmlXForm(this.divId);
var self = this;
dhxForm.loadStruct(this.url, function() {
if (loadItemUrl)
self.load(loadItemUrl);
});
这将确保load
是正确的对象上调用。