Javascript对象:这两个值有何不同
Javascript objects: how are these two values different?
我是OOP的新手,我很难分辨为什么我为两个控制台日志获得不同的值。第一个日志给了我正确的高度值,第二个通过对象属性访问该值的日志告诉我高度为0。我还可以说,如果我在imageLoader.images[this.sprite]
上运行控制台日志,在this.height = imageLoader.images[this.sprite]
时运行player1.height
(所以基本上我从每个值中删除了.height属性),第一个日志会正确地命名精灵,即使它已经动态更改,而第二个日志再次不正确,只命名对象在创建时分配的精灵(来自imageName参数)。
作为一点背景,构造函数从对象imageLoader中提取图像,每个实际图像都包含在以图像名称命名的属性中。我想通过每个新事物的高度属性来访问每个图像的高度。
function Thing(imageName) {
this.sprite = imageName;
this.height = imageLoader.images[this.sprite].height;
}
var player1 = new Thing ("face_right");
console.log(imageLoader.images[player1.sprite].height);
console.log(player1.height);
希望这在某种程度上是明确的。谢谢你看。
您没有显示任何会导致精灵更改的代码,但您似乎是在说您希望player1.height
自动更新以反映当前精灵的高度,精灵可以在哪里动态更改?如果是这样,它将不会以当前的方式工作,因为您设置的this.height
属性将只是一个基元数值,而不是对其他对象属性的引用。当sprite更新时,您需要添加代码来更改Thing
实例的.height
属性。
或者,使用.height()
方法,而不是.height
属性,或者如下所示将其称为.getHeight()
:
function Thing(imageName) {
this.sprite = imageName;
this.getHeight = function() {
return imageLoader.images[this.sprite].height;
}
}
var player1 = new Thing ("face_right");
console.log(player1.getHeight());
相关文章:
- 减去两个索引不同但值相同的整数
- 别名或以其他方式合并两个具有不同名称的相同对象原型
- 如何在Javascript中连接两个结构不同的对象
- 如何在Famo.us中的两个视图(不同的js文件)之间进行通信
- jQuery Tools Overlay-两个具有不同关闭条件的按钮
- Javascript对象:这两个值有何不同
- 我可以同步两个具有不同年份(闰年)的高图表系列吗?
- EaselJS - 有两个具有不同FPS的画布
- Javascript 比较两个大小不同的数组,并返回不在第二个数组中的项目
- 两个具有不同行为的相等 jQuery 脚本
- 两个自动完成,在两个输入(不同的网络 id)上,在同一页面上
- 同一页面上两个具有不同 css 的打印按钮.可能
- 如何从一个JSON对象创建两个具有不同值的数组
- 两个具有不同动作的提交按钮
- Google Charts:一组绑定控件>两个基于不同数据表的图表,通过相同的列名/值
- 如何合并两个具有不同属性的对象
- 两个具有不同选择值的HTML选择
- 是否有可能为两个具有不同POST数据的表单声明一个jQuery验证?
- HTML5全局变量在两个地方不同
- JavaScript日期:为什么这两个日期不同