新手Javascript问题:
如何在公共方法中访问私有类属性?在所有示例中,我看到一个公共原型函数访问public(this.property)。是否可以通过公共方法访问私有财产?
答案 0 :(得分:3)
此模式称为“特权”方法。它看起来像这样:
function MyClass() {
var secret = "foo";
this.tellSecret = function() {
return secret;
};
}
var inst = new MyClass();
console.log(inst.tellSecret()); // => "foo"
console.log(inst.secret); // => undefined
这是有效的,因为私有变量在闭包中。这个问题是我们将特权方法放在每个实例上,而不是原型上。这不太理想。通常,作者不会在JavaScript中使用私有变量,而只使用前导下划线,这通常用于暗示公共方法/属性应被视为私有:
function MyClass() {
this._secret = "foo";
}
MyClass.prototype.tellSecret = function() {
return this._secret;
};
答案 1 :(得分:0)
这是一个小小的演示:
var Foo = function(name){
this.name = name;
var t = name;
if(typeof(this.show) != 'function'){
Foo.prototype.show = function(){
console.log(t);
console.log(this.name);
};
}
};
var a = new Foo('a');
var b = new Foo('b');
b.show(); // ...
希望它可以帮到你。