JavaScript构造函数中toggleBool方法无法切换布尔值求助
问题分析与解决
你的问题出在toggleBool方法里——你只做了布尔值的取反运算,但没有把运算结果赋值回实例的bool属性。
原代码里的this.bool != this.bool只是计算出了当前bool的相反值,但这个结果没有被保存,实例的bool属性自然不会变化。
修正方法很简单,把运算结果赋值给this.bool:
function obj(string1, string2, bool) { this.string1 = string1; this.string2 = string2; this.bool = bool; this.toggleBool = function() { this.bool = !this.bool; // 改为赋值操作,将取反结果存回属性 } } var obj1 = new obj("text", "text", true); console.log(obj1); obj1.toggleBool(); console.log(obj1);
这样调用toggleBool时,就会把this.bool的值切换为相反状态,第二次打印时就能看到bool从true变成false了。
补充说明:!this.bool是布尔取反的标准简洁写法,和this.bool != this.bool效果完全一致,但可读性更高。
内容的提问来源于stack exchange,提问作者tnichole15
相关产品推荐
相关产品推荐

