在JavaScript中添加私有方法?

时间:2015-07-24 18:26:41

标签: javascript methods private

我正在尝试制作基本游戏以加强我的JavaScript知识。但是我需要一些帮助来尝试向对象添加私有方法。这样做的原因是我希望用户能够在达到某个条件时访问某些移动,但不是之前。我也不想每次角色升级时都要添加方法。这是一些代码:

function Character(name, type, sex) {
    this.name = name;
    this.type = type;
    this.sex = sex;
    //Ignore this part as well this.punch = function() {
        //Ignore this. Will work on later
    }
};

var rock = new Character('Stoner', 'Rock', 'Male');

3 个答案:

答案 0 :(得分:0)

如果您使用" var"而不是this.punch。它将成为私人。

 function Character(name, type, sex) {
        this.name = name;
        this.type = type;
        this.sex = sex;
        var punch = function() {
            //Ignore this. Will work on later
        }

    };

    var rock = new Character('Stoner', 'Rock', 'Male');

答案 1 :(得分:0)

这是一个完全的猜测,但这是基于似乎你想要的东西的观点。我现在想不出另一种方式。

function Character(name, type, sex) {
    var level = 1;
    this.name = name;
    this.type = type;
    this.sex = sex;
    this.punch = function() {
        // If the user isn't over level 5, don't punch anything
        if (level < 5) {
            return;
        }
        // Punch something
    }
}

显然你需要一些方法来平衡角色...

答案 2 :(得分:0)

  

我不认为这是OP正在寻找的......似乎OP想要他们&#34;私人&#34;直到用户达到某个级别然后公开

假设这个评论是正确的......

它不需要是一个私有方法,让它成为一个公共方法,然后使用if / else语句来处理它们是否没有足够的&#34;级别&#34;。

function Character(name, type, sex) {
  this.name = name;
  this.type = type;
  this.sex = sex;

  this.level = 10;

  this.punch = (function(){
    if (this.level > 5) {
      /* Punch functionality goes here. */
    } else {
      /* They don't have enough levels, tell them that! */
    }
  }).bind(this)
}

我只是假设您正在使用关卡。如果你有其他系统,你可以简单地调整它。