我试图澄清我对JavaScript中私人成员的理解。似乎应该很容易:
function MyClass(param) {
var thisIsPrivate = param;
this.getPrivateMember = function() {
return thisIsPrivate;
}
}
var thing = new MyClass('tada!');
console.log(thing.thisIsPrivate) // undefined
console.log(thing.getPrivateMember()) // "tada!"
在我的阅读中,我一直遇到文章,这些文章甚至没有提及这一点,而是提出了复杂的解决方案,例如使用封闭或弱图。通常的结论是,在JavaScript中没有一个与私人成员合作的好方法。
有人可以让我填写我所缺少的东西吗?这是由于某种原因是个坏主意吗?
感谢您的答复。因此,我对这种方法的局限性的理解是,在构造函数之外添加的方法无法看到"私人"变量。我感到有些开明。
function MyClass(param) {
var thisIsPrivate = param;
this.getPrivateMember = function() {
return thisIsPrivate;
}
}
MyClass.prototype.showPrivateMember = function(){
console.log(thisIsPrivate);
}
var thing = new MyClass('tada!');
console.log(thing.thisIsPrivate) // undefined
console.log(thing.getPrivateMember()) // tada!
thing.showPrivateMember(); // ReferenceError: thisIsPrivate is not defined at MyClass.showPrivateMember
thing.showPrivateMember = function(){
console.log(thisIsPrivate);
}
thing.showPrivateMember(); // ReferenceError: thisIsPrivate is not defined at MyClass.showPrivateMember