JavaScript新手遇到问题了,求大神解答……

qq_35754692 2017-02-11 11:52:57
代码如下:
function Player(){
Type:null;
Name:null;
Life:null;
Card:null;
}
var p=new Player()
p.Type="AI"
p.Name="桜の町中"
p.Life=4
p.Card=[]
alert(p.Type)
我要新建一个对象,用来描述一个卡牌游戏中的玩家。但是我运行的时候(在Windows中),它就提醒我缺少对象,如果去掉alert,就没有任何提示了(我知道这是说运行正常),就是说是alert的问题。但是我觉得alert用法应该没问题啊,因为单独只用一句alert也是提示缺少对象……求大神解答
PS:可能在浏览器中没问题,但是我是在Windows中的WindowsScriptHost中执行的。
...全文
177 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
天际的海浪 2017-02-11
  • 打赏
  • 举报
回复
第一,自定义对象的方式不对。应该是
function Player(){
	this.Type = null;
	this.Name = null;
	this.Life = null;
	this.Card = null;
}
第二,javascript是脚本语言。自身是没有输入输出方法的。 alert()方法是html网页浏览器宿主环境提供的。 在WSH宿主环境要用 WScript.Echo();
qq_35754692 2017-02-11
  • 打赏
  • 举报
回复
谢谢啦…………
天际的海浪 2017-02-11
  • 打赏
  • 举报
回复
引用 6 楼 qq_35754692 的回复:
WScript.Echo("Start!")
var Players=[]
var PlayerNumber=0
var Players[PlayerNumber++]=new Player(AI,"桜の町中","Test",4)
var Players[PlayerNumber++]=new Player(AI,"桜の町外","Test",4)
Main(Players[0])

function Main(Player){
var CurrentPlayer=Player
if (CurrentPlayer.Type="AI"){
	AI(CurrentPlayer)
	NextPlayer=Player==Players[0]?Players[1]:Players[0]
	}
Main(NextPlayer)
}

function Player(Type,Name,Character,Life){
this.Type=Type
this.Name=Name
this.Life=Life
this.Character=
this.Card=[]
this.MaxLife=Life
this.Skill=LoadSkill(Name,this)
}

function LoadSkill(Name,Object){
	if(Name="Test") {
		Object.Skill=_Skill_Test_Damage()
	}
}

function _Skill_Test_Damage(FromPlayer,TargetPlayer){
	Damage(FromPlayer,TargetPlayer,1)
}

function Damage(FromPlayer,Target,Damage){
	Target.Life-=1
	if (Target.Life<=0) {
		EndGame(FromPlayer)
	}
}

function AI(Player){
var Enemy = (Players[0]==Player)?Players[1]:Players[0]
_Skill_Test_Damage(Player,Enemy)
}

function EndGame(Player){
	WScript.Echo(Player.Name+"win!")
}
那为什么这段代码有有提示 行:4 字符:12 错误:缺少';' 但是调用数组不是这么做的吗?感觉没什么问题……
不要 var, AI是字符串要加引号 Players[PlayerNumber++]=new Player("AI","桜の町中","Test",4)
天际的海浪 2017-02-11
  • 打赏
  • 举报
回复
类似 confirm() 的是WshShell对象的Popup()方法,并且功能比 confirm() 强的多。 var WshShell = WScript.CreateObject("WScript.Shell"); var BtnCode = WshShell.Popup("Do you feel alright?", 7, "Answer This Question:", 4 + 32); 对于 prompt() WSH没有提供对应的方法,只有用VBScript的InputBox函数。 http://3y.uu456.com/bp_0g14z0io3703gjy5z89n_1.html
qq_35754692 2017-02-11
  • 打赏
  • 举报
回复
WScript.Echo("Start!")
var Players=[]
var PlayerNumber=0
var Players[PlayerNumber++]=new Player(AI,"桜の町中","Test",4)
var Players[PlayerNumber++]=new Player(AI,"桜の町外","Test",4)
Main(Players[0])

function Main(Player){
var CurrentPlayer=Player
if (CurrentPlayer.Type="AI"){
	AI(CurrentPlayer)
	NextPlayer=Player==Players[0]?Players[1]:Players[0]
	}
Main(NextPlayer)
}

function Player(Type,Name,Character,Life){
this.Type=Type
this.Name=Name
this.Life=Life
this.Character=
this.Card=[]
this.MaxLife=Life
this.Skill=LoadSkill(Name,this)
}

function LoadSkill(Name,Object){
	if(Name="Test") {
		Object.Skill=_Skill_Test_Damage()
	}
}

function _Skill_Test_Damage(FromPlayer,TargetPlayer){
	Damage(FromPlayer,TargetPlayer,1)
}

function Damage(FromPlayer,Target,Damage){
	Target.Life-=1
	if (Target.Life<=0) {
		EndGame(FromPlayer)
	}
}

function AI(Player){
var Enemy = (Players[0]==Player)?Players[1]:Players[0]
_Skill_Test_Damage(Player,Enemy)
}

function EndGame(Player){
	WScript.Echo(Player.Name+"win!")
}
那为什么这段代码有有提示 行:4 字符:12 错误:缺少';' 但是调用数组不是这么做的吗?感觉没什么问题……
qq_35754692 2017-02-11
  • 打赏
  • 举报
回复
已经改了……谢谢大神……但是还有一个问题,在WSH环境下对应confirm和prompt的函数呢?
天际的海浪 2017-02-11
  • 打赏
  • 举报
回复
书上说的是对象字面量的格式,不是构造函数。

var obj = {
	Type:null,
	Name:null,
	Life:null,
	Card:null
};
你在函数中 Type:null; 这样写不是设置属性,是Labeled 语句标识符。用来指示 break 和 continue 应用于哪个语句。
qq_35754692 2017-02-11
  • 打赏
  • 举报
回复
恩……不过我的书上是这么告诉我定义对象的……而且执行貌似也没问题……另外,在WSH环境下对应confirm和prompt的函数呢?

87,993

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧