我正在尝试制作基本游戏以加强我的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');
答案 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)
}
我只是假设您正在使用关卡。如果你有其他系统,你可以简单地调整它。