可以访问公共方法中的私有类属性
Can one access a private class property in a public method?
新手Javascript问题:
如何在公共方法中访问私有类属性?在所有的例子中,我看到一个公共原型函数正在访问public(this.property)。有可能在public方法中访问私有属性吗?
这种模式被称为"特权"方法。它看起来像这样:
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;
};
这里有一个小演示:
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(); // ...
希望它能帮助你。
相关文章:
- 为什么NgModelController属性/方法以$开头
- 如何使用设置属性方法在jquery中更改css
- 全局向对象添加属性/方法
- AngularJS $http.delete 在“类型错误:无法分配给只读属性'方法'”中中断
- 添加属性/方法的明确最佳方法
- 扩展类时继承而不是覆盖属性/方法
- Javascript子类对象不保留基类的属性/方法
- 将模型属性方法发送到客户端 Sails Angular
- 错误:参数 4 的值无效.属性“方法”:意外属性
- 类型错误:无法读取 nodejs 应用程序中未定义的属性“方法”
- 属性/方法无法初始化indexedDB
- 在javascript中定义属性方法的适当模式;类”;
- 创建两个函数来计算对象属性/方法
- 当getElementById返回null时,取消对属性/方法的访问
- 自定义属性方法如何在Sails js中工作
- 通过js中的数组属性方法进行迭代
- 为什么要添加属性/方法到视图模型AFTER定义
- 在Angular中,在闭包中引用服务属性/方法最合适的方式是什么?
- 列出一个对象的所有属性/方法
- Javascript:添加属性方法问题