从外部访问私有财产

时间:2019-01-18 19:22:01

标签: typescript private

我在打字稿中遇到了“奇怪”的行为:

    class A {
        private _prop;

        public a() {
            let x = new A();
            x._prop
        }
    }

不会引发任何异常,而我正在从对象外部访问私有属性。

有人知道吗?

  • 如果这是正常行为(我想是)
  • 在哪里可以找到有关这方面的文献?我感到很困惑...

修改 我的意思是:当我从外部对象x访问私有属性_prop时,编译器不会显示任何异常。我不是在说运行时间。

2 个答案:

答案 0 :(得分:2)

这是正常行为,您处于同一类上下文中,这意味着即使它是新实例,您也可以访问其私有属性。

这是相同行为的C#等效项(有效)

public class A
{
    private int _prop;
    public void MyMethod()
    {
        var x = new A();
        x._prop = 5;
    }
}

答案 1 :(得分:1)

大多数语言都允许这种私人访问。您不能访问任何其他类的私有,但是您可以访问当前类的私有,即使它们是该类另一个实例的私有也是如此。

例如C#

  

private:类型或成员只能由相同类或结构中的代码访问。

(没有提及是否必须通过this访问该成员)