javascript对象声明没有按我希望的方式工作
javascript object declaration not working as i want it to
我正在创建一个游戏,在其中我声明对象player
如下:
var player = {
"id": "player",
"displayText" : "<img src = 'http://3.bp.blogspot.com/-kAhN0HX-MBk/T_5bApfhbJI/AAAAAAAAAuI/lUww8xT9yV8/s1600/smileys_001_01.png'" +
"class='onTop' id='" + this.id + "' alt='you' border='0' />" +
"<div id = '" + this.id + "health' class = 'healthLost hide'></div>",
};
然而,在player.displayText
中,this.id
正在返回undefined
,为什么以及我能做些什么来解决这个问题?
在创建对象文字时不会更改当前作用域,因此this
不是您认为的那样。
制作一个对象:
function Player(id) {
this.id = id;
this.displayText = "<img src = 'http://3.bp.blogspot.com/-kAhN0HX-MBk/T_5bApfhbJI/AAAAAAAAAuI/lUww8xT9yV8/s1600/smileys_001_01.png'" +
"class='onTop' id='" + this.id + "' alt='you' border='0' />" +
"<div id = '" + this.id + "health' class = 'healthLost hide'></div>";
}
var p = new Player('foo');
var player = {
"id": "player",
"displayText" : "<img src = 'http://3.bp.blogspot.com/-kAhN0HX-MBk/T_5bApfhbJI/AAAAAAAAAuI/lUww8xT9yV8/s1600/smileys_001_01.png'" +
"class='onTop' id='" + player.id + "' alt='you' border='0' />" +
"<div id = '" + player.id + "health' class = 'healthLost hide'></div>",
};
你不能使用"this"。。因为它绑定到全局对象(如浏览器中的"窗口")。。如果您知道对象的名称,请使用。。对象名称…
我已经使用上面的player.id来解决这个问题。
this
与函数范围有关,因此在对象分离中使用它是不起作用的。在这种情况下,你可以做的事情是这样的:
var player = {
"id": "player",
"displayText" : "<img src = 'http://3.bp.blogspot.com/-kAhN0HX-MBk/T_5bApfhbJI/AAAAAAAAAuI/lUww8xT9yV8/s1600/smileys_001_01.png'"
};
player.displayText += "class='onTop' id='" + player.id + "' alt='you' border='0' /><div id = '" + player.id + "health' class = 'healthLost hide'></div>";
要获得这样的结果,您需要将类设置为函数。试试这个:
var player_class = function(){
this.id = "player"
this.displayText = "<img src = 'http://3.bp.blogspot.com/-kAhN0HX-MBk/T_5bApfhbJI/AAAAAAAAAuI/lUww8xT9yV8/s1600/smileys_001_01.png'" +
"class='onTop' id='" + this.id + "' alt='you' border='0' />" +
"<div id = '" + this.id + "health' class = 'healthLost hide'></div>";
}
var player = new player_class();
在这里查看一些Mozilla文档。
相关文章:
- 我想使用模态通过php文件发送邮件,并且我希望在提交关闭后关闭pop
- 我希望只有在我滚动页面后才能显示我的返回页首图标
- 我希望在不替换现有变量的情况下恢复localStorage中的变量
- Jquery幻灯片以一行左侧的图像开始,但我希望它从右端开始
- 我希望这个日期选择器可以从1990年到2000年之间的年份中选择日期
- 如何在 ajax 调用上阻止(我希望它阻止)
- 我希望这个img类是一个按钮,当你点击它时,它会播放hello.mp3
- 我希望我的php/html网站上的JavaScript能够实时更新
- 当我按下getroute按钮时,我希望我的javascript变量存储在数据库中
- 我希望我所有的select类,包括以后可能添加的类,都使用select2
- 如何获得javascript'对于'循环,以便在我希望的时候迭代
- 在 Zkoss 中选中的复选框设置为禁用(真),但我希望复选框和勾选的可见性保持不变
- 我希望每次单击按钮时都能将每张图片更改为显示在屏幕上的同一位置
- 我希望joint.js库读取我的JSON并将其显示为一个单元格:rect和circle
- 我希望在同一页面上同时播放多个SoundCloud小部件
- q.所有的功能都不能像我希望的那样工作
- javascript对象声明没有按我希望的方式工作
- 使用Ionic Framework,我如何向过渡动画提供我希望视图以何种方式滑入或滑出的提示
- 在数组中,如何以我希望打印的方式打印值而不是最后一个值
- jquery的每个函数都不能按我希望的方式工作