Javascript集合方法
Javascript set method
我有一个javascript"class",看起来像:
function MapObject(x, y, size){
var x = x;
var y = y;
var size = size;
var color = "red";
this.draw = function(g2d){
g2d.setFillColor(color);
g2d.fillRect(x, y, size, size);
}
this.setColor = function(newColor){
color = newColor;
}
this.collision = function(mousex, mousey){
return mousex > x && mousex < x + size && mousey > y && mousey < y + size;
}
}
我的问题是,我想把"setColor"函数中的参数也命名为"color"。我从java:中知道这一点
void setColor(Color color){ this.color = color; }
有没有办法在javascript中实现这一点?
我已经试过了:
this.setColor = function(color){
this.color = color;
}
这行不通。我没有得到任何错误,但数值没有变化。。
如果您想用局部变量(即var color
)保持设置,那么no,您不能将参数命名为color
,因为它会遮挡外部变量。
您需要告诉函数您正在修改哪个color
变量。在您的示例中,setColor
为该函数创建一个新的私有变量,并为其分配newColor
的值。您应该在setColor()
函数中为赋值运算符预先添加this
关键字:
this.setColor = function(color){
this.color = color;
}
jsFiddle演示
如果你想使用对象属性:,你也需要更新draw()
函数
this.draw = function(g2d){
g2d.setFillColor(this.color);
g2d.fillRect(this.x, this.y, this.size, this.size);
}
相关文章:
- 我们可以用参数对象集合而不是原始数据来调用JavaScript collection.reduce()方法吗
- 在主干中呈现集合的最佳方法
- Undercore:使用集合方法包裹数组
- 正在使用AngularJS获取集合中的选定元素.声明性方法
- 显示行动通过铁:路由器,模板是't从集合传递数据.findOne方法
- 找到将 N 个对象分布到 M 集合中的所有方法的算法
- 使用页面加载数据引导主干集合的正确方法
- 在使用 meteor 集合时从开发控制台收到“找不到方法 [404]”错误
- 当您有集合时,调用接收单个对象作为参数的函数的最佳方法是什么
- 根据某些集合创建随机颜色的方法
- 如何从骨干中的集合调用模型的方法.js
- Backbone.Fetch 方法应该在集合中还是视图中
- 基于集合侦听器运行方法的主干
- 结果:TypeError:Object[Object Object]没有方法'集合'尝试编辑分析对象时
- 将Parameters添加到Backbone.js集合导致ArgumentError(筛选器方法的参数数目错误.)
- 有没有一种方法可以通过一些任意的排序标准从猫鼬集合中获得第n个文档
- 在Meteor方法中承诺之后插入集合
- 检查数字是否在集合中的最快速方法
- Backbone.js从中提取集合's初始化方法
- 通过更改事件调用方法时,主干集合为空