【问题标题】:Javascript define private variable [duplicate]Javascript定义私有变量[重复]
【发布时间】:2017-10-13 01:07:05
【问题描述】:

我想像在c中一样使用javascript构建一个类,主要问题是private属性。

var tree = {
  private_var: 5,
  getPrivate:function(){
   return this.private_var;
  }
};
console.log(tree.private_var);//5 this line want to return unaccessible
console.log(tree.getPrivate());//5

所以我想检测来自tree.private_var 的访问并返回unaccessible,然后this.private_var 返回5
我的问题是:有没有办法在 javascript 中设置私有属性?

编辑:我是这样看的

class Countdown {
    constructor(counter, action) {
        this._counter = counter;
        this._action = action;
    }
    dec() {
        if (this._counter < 1) return;
        this._counter--;
        if (this._counter === 0) {
            this._action();
        }
    }
}
CountDown a;

a._counter 无法访问? 但是

【问题讨论】:

  • 但是什么?您似乎没有完成问题。

标签: javascript private


【解决方案1】:

tree定义为函数而不是JavaScript对象,在函数中通过var关键字定义私有变量,通过this.关键字定义公共获取函数并使用该函数创建一个新实例

var Tree = function(){
    var private_var = 5;
    this.getPrivate = function(){
        return private_var;
    }
}

var test = new Tree();
test.private_var; //return undefined
test.getPrivate(); //return 5

在 ES6 中,你可以这样做,但 IE 不支持,所以我不推荐

class Tree{
    constructor(){
        var private_var =5;
        this.getPrivate = function(){ return private_var }

    }
}

var test = new Tree();
test.private_var; //return undefined
test.getPrivate(); //return 5

【讨论】:

  • 你没有展示如何使用 ES6 类语法。
  • 感谢@SolomonTam,以这种方式定义类在javascript中会很好。
  • so I wouldn't recommend?so I would recommend
猜你喜欢
  • 2016-12-26
  • 1970-01-01
  • 1970-01-01
  • 2014-04-14
  • 1970-01-01
  • 1970-01-01
  • 2020-04-25
  • 2011-07-06
  • 2015-03-19
相关资源
最近更新 更多