为了账号安全,请及时绑定邮箱和手机立即绑定

在javascript中学习OO:错误 - 无法读取未定义的属性

在javascript中学习OO:错误 - 无法读取未定义的属性

慕雪6442864 2021-10-21 16:05:50
我相信我忽略了我正在做的事情。我试图玩弄对象并获得一些乐趣,但我遇到了这个奇怪的错误。我在 C++/C# 中使用过 OO。我创建了一个游戏环境对象,该对象将包含有关此游戏的所有信息。然后我创建了一个验证工具(对象),其中包含有效输入的正则表达式测试,我在其中调用并传入然后返回测试结果。使用这些对象,我创建了一个launch();函数,提示用户输入用户名并使用该工具进行验证。正是在这个电话中,我遇到了这个错误。考虑到这个错误,我不确定我在做的事情在 JS 中是否合法。launch();function launch() {  var userNameInput = prompt("Please enter your name:", "User Name");  if (gameEnv.player(userNameInput)) {    alert("Please enter only letters for a username.");    location.reload(true);  }}var gameEnv = {  playerName: "",  set player(input) {    if (validationTool.LetterValidator(input)) {      this.playerName = input;      return 1;    } else {      return 0;    }  },}var validationTool = {  letterOnlyValidation: /^[a-zA-Z^\s]+$/,  LetterValidator: function(input) {    return letterOnlyValidation.test(input);  },}
查看完整描述

2 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

这里有几个问题:


set 语法绑定了一个对象属性,应该=用来赋值。

订单事项

var gameEnv = {

  playerName: "",

  set player(input) {

    if (validationTool.LetterValidator(input)) {

      this.playerName = input;

      alert("player name set");

    } else {

      alert("Please enter only letters for a username.");

    }

  },


}


var validationTool = {

  letterOnlyValidation: /^[a-zA-Z^\s]+$/,

  LetterValidator: function(input) {

    return this.letterOnlyValidation.test(input);

  },

}


launch();


function launch() {

  var userNameInput = prompt("Please enter your name:", "User Name");

  gameEnv.player = userNameInput;

}


查看完整回答
反对 回复 2021-10-21
  • 2 回答
  • 0 关注
  • 191 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信