【发布时间】:2017-11-18 12:01:46
【问题描述】:
正如我们所知,您可以通过执行以下操作在 JavaScript 中将“类”变量设为“私有”:
function ClassName(attribute){
var privateAttribute = attribute;
this.accessor = function(){
return privateAttribute;
}
this.mutator = function(x){
privateAttribute = x;
}
}
我知道这行得通,而且我以前用过。但这有点打破了我的理解。局部变量不应该在函数执行结束时超出范围吗?根据 JavaScript 作用域的工作方式,当您尝试从 ClassName 实例调用访问器时,var privateAttribute 不应该是不可访问的吗?
【问题讨论】:
-
只要它存在,它就一直在对象成员的范围内。我敢肯定,有人会提供详细的技术解释,说明为什么我目前无法正确表达,但您可以确信这种行为是明确定义的,并且会保持一致。
标签: javascript scope private