Javascript集合方法

Javascript set method

本文关键字:方法 集合 Javascript      更新时间:2023-09-26

我有一个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);
}