我在打字稿中遇到了“奇怪”的行为:
class A {
private _prop;
public a() {
let x = new A();
x._prop
}
}
不会引发任何异常,而我正在从对象外部访问私有属性。
有人知道吗?
修改
我的意思是:当我从外部对象x访问私有属性_prop
时,编译器不会显示任何异常。我不是在说运行时间。
答案 0 :(得分:2)
这是正常行为,您处于同一类上下文中,这意味着即使它是新实例,您也可以访问其私有属性。
这是相同行为的C#等效项(有效)
public class A
{
private int _prop;
public void MyMethod()
{
var x = new A();
x._prop = 5;
}
}
答案 1 :(得分:1)
大多数语言都允许这种私人访问。您不能访问任何其他类的私有,但是您可以访问当前类的私有,即使它们是该类另一个实例的私有也是如此。
例如C#:
private
:类型或成员只能由相同类或结构中的代码访问。
(没有提及是否必须通过this
访问该成员)