Javascript定义私有变量

时间:2017-10-13 01:07:05

标签: javascript private

我想使用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的访问权限并返回unaccessiblethis.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无法访问? 但是

1 个答案:

答案 0 :(得分: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