我有一个自定义 Javascript 对象,如下所示:
var CustomClass = function(settings) {
this.var_1 = false;
this.var_2 = null;
this.var_3 = 0;
}
CustomClass.prototype.method_1 = function(){
var reader = new FileReader();
reader.onload = (function(cropWidget) {
this.var_1 = true;
});
}
CustomClass.prototype.method_2 = function(){
console.log(this.var_1); // logs 'false' onto the console
if(this.var_1)
{ // proceed further and do something
}
}
CustomObject 被实例化:
$(document).ready(function{;
var customObj = new CustomClass({/*json values*/});
});
然后,另一个 DOM 事件将调用 method_1,例如:
$('#element1').click(function(){
customObj.method_1(); // this is where var_1 is being set to true
});
当另一个元素在 DOM中调用 method_2() 时,就会出现问题,如下所示:
$('#element2').click(function(){
customObj.method_2();
});
它检查 var_1 的值,正如您所记得的,当 customObj 调用 method_1 时该值已设置为 true
this.var_1 是假的,而不是应有的真。这是否意味着 var_1 的范围仅在 method_1() 的范围内设置为 true 并且仍然保留它的旧值?IMO Javascript 是通过引用传递的,因此变量值应该在其原始位置设置为 true。
有人可以解释我哪里出错了,我可以如何设置 var_1 的值,以便它在 method_2 中也保留它的新值?