如何使用"私人"属性在类中的属性?

时间:2016-10-05 15:00:28

标签: javascript oop

考虑以下" class" :

function Test()
{
    var data = new Uint8Array(232);
}

我想在data属性中添加以下访问器:

Object.defineProperty(Test.prototype, "data",
{
    get: function()
    {
        // calculate other things related to data
        return data;
    }
});

我遇到了以下问题:

  • 在"类"中定义属性范围有效,但使每个实例重新定义不良的属性。编辑:这是this question的相关性停止的地方。
  • 在外面定义房产显然不起作用,因为数据是通过关闭而私有的。

所以我试着将属性公之于众:

function Test2()
{
    this._data = new Uint8Array(232);
}

Object.defineProperty(Test2.prototype, "data",
{
    get: function()
    {
        // calculate other things related to data
        return this._data;
    },
    // Avoid "TypeError: setting a property that has only a getter"
    set: function(nv)
    {
        this._data = nv;
    }
});

编辑:我现在使用" _data" (而不是" data")作为我的私有属性,以避免"数据"的递归问题。属性。这种模式似乎有效。

但这是一种好的和有效的模式吗?是否存在允许使用具有属性的伪私有变量的模式?

0 个答案:

没有答案