在JavaScript中是否可以创建可在原型中访问的私有变量?我尝试了以下obviously doesn't work,因为bar
只能在Foo
内访问,而不能在原型中访问。
function Foo() {
var bar = 'test';
}
Foo.prototype.baz = function() {
console.log(bar);
};
我知道我也不能使用this.bar = 'test'
,因为这会使the property public AFAIK。如何将bar
变量设为私有,但可以通过原型访问?
答案 0 :(得分:10)
你不能 - 从该范围之外访问一个词法范围的变量是不可能的。
原型方法(根据定义)在所有实例之间共享,并且这样做必须存在于它们自己的范围内。
道格拉斯·克罗克福德的文章Private Members in JavaScript提供了一些有用的解释,但没有符合您要求的解决方案。