从外部访问私有属性

Accessing private properties from outside

我在打字稿中遇到了 'strange' 行为:

    class A {
        private _prop;

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

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

有人知道吗:

编辑 我的意思是:当我从外部对象 x 访问 private 属性 _prop 时,编译器没有显示任何异常。我不是在谈论 运行 时间。

大多数语言都允许这种私人访问。您无法访问任何其他 class 的私有对象,但您可以访问当前 class 的私有对象,即使它们是 class 的另一个实例的私有对象。

例如 C#:

private: The type or member can be accessed only by code in the same class or struct.

(未提及会员是否必须通过this访问)

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

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

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