2014-09-25 48 views
0

我有一個JavaScript「類」,它看起來像這樣:的Javascript設置方法

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」功能「顏色」的paremeter了。 我知道這個從Java:

void setColor(Color color){ this.color = color; } 

有沒有辦法在JavaScript實現這一目標?

我已經嘗試過:

this.setColor = function(color){ 
    this.color = color; 
} 

這是行不通的。 我沒有得到任何錯誤,但價值並沒有改變..

+0

只需將顏色名稱傳遞給函數並在函數中使用它就像like.color = yourFunctionArgument – 2014-09-25 17:52:56

+0

@MuhammadAli:他是。閱讀問題。 – 2014-09-25 18:20:01

回答

0

你需要告訴功能哪個color變量你正在修改。在您的示例中,setColor會爲該函數創建一個新的私有變量,併爲其分配值newColor。您應該setColor()函數內預先設置this關鍵字賦值操作符:

this.setColor = function(color){ 
    this.color = color; 
} 

jsFiddle Demo

你需要太更新draw()功能,如果你希望使用的對象屬性:

this.draw = function(g2d){ 
    g2d.setFillColor(this.color); 
    g2d.fillRect(this.x, this.y, this.size, this.size); 
} 
+0

不工作.... – 2014-09-25 18:06:27

+0

嗯,它絕對是... http://jsfiddle.net/2a87412w/1/注意'alert()'說'綠色'?並注意這是我在第22行指定的顏色?! – BenM 2014-09-25 18:08:49

1

如果你想保留你的設置與本地變量(即var color)然後沒有,你不能命名參數color,因爲它會影響外部變量。

+0

是的,我想讓他們..好吧,謝謝 – 2014-09-25 18:20:45