【发布时间】:2015-08-09 21:13:19
【问题描述】:
我正在使用 setter 为我的类中的变量赋予新值。但是,在设置该值并在另一种方法中使用后,该变量默认返回其原始值。
以下代码不是我项目中的实际代码......
var canContinue = false;
classXX.prototype.check = function() {
if(canContinue){
//do something
}
}
classXX.prototype.init = function() {
canContinue = false;
}
classXX.prototype.setCanContinue(val) {
canContinue = val;
}
return {
getInstance: function() {
_instance = new classXX();
return _instance;
}
};
类实例化后 canContinue = true;如果我调用 classXX.setCanContinue(false) 那么检查函数仍然认为 canContinue 为 true。
我错过了什么吗?
【问题讨论】:
-
请提供一个独立的可运行示例。 XX 班在哪里?
-
为什么 canContinue 不是类变量?
classXX.prototype.canContinue将允许this.canContinue分配和引用它。 -
setCanContinue 定义错误,为什么不使用实例(对象)属性而不是所有对象使用相同变量的类属性?
-
@Jesse:在 classXX.prototype 中放置一个可变变量会让人头疼。它要么是全局变量,要么是应该在构造函数中初始化的实例变量。
-
这是一个非常小的并且不是当前类的 100% 准确的表示。
标签: javascript class encapsulation