我很好奇如何更好地写出来:
function Klass(variable) {
this.variable = variable;
this.callAjax = function() {
$.get('/url', { }, function(json) {
console.log(variable); //! <-- shows undefined
}, "json");
}
}
所以我创建了一个局部变量:_variable
function Klass(variable) {
this.variable = variable;
this.callAjax = function() {
var _variable = this.variable;
$.get('/url', { }, function(json) {
console.log(_variable); //! <-- its ok
}, "json");
}
}
它很好,但我真的没有这个解决方案,
你们中有人有更好的代码吗?
答案 0 :(得分:4)
那就是这样。
function(json){console.log(_variable);}
形成一个带有“_variable”的闭包。 “_variable”永远保留原始值。
如果您的“变量”应稍后更新,并且您想要更新的“变量” 你定义
var self = this;
并调用self.variable来获取它。
这样,每次执行回调时,您都会获得更新的“变量”。
完整的代码:
function Klass(variable) {
var self = this;
this.variable = variable;
this.callAjax = function() {
$.get('/url', { }, function(json) {
console.log(self.variable);
}, "json");
}
}