2011-11-27 215 views
0

我有一個數組this.colors = [RED, BLUE, GREEN],有時我想從這個數組中選擇一個隨機顏色。 當我通過這樣做,結果是正常的:javascript函數返回函數

rand_color = this.colors[Math.floor(Math.random() * this.colors.length)] 
javascript: console.log(rand_color) 
// => rgb(211, 65, 65) 

但是,當我在功能包好:

this.pick_random_color = function() { 
    return this.colors[Math.floor(Math.random() * this.colors.length)]; 
} 

該函數不返回隨機值。相反,我在日誌中收到此消息:

color = this.pick_random_color; 
javascript: console.log(color); 
// => this.pick_random_color = function() { 
// => return this.colors[Math.floor(Math.random() * this.colors.length)]; 
// => } 

函數有什麼問題?

+2

我敢肯定你的'this'被混淆代碼的使用,這是完全沒有必要的。 DaveShaw是100%正確的,在這種情況下,你正在爲'color'分配一個空變量。 – Alex

回答

7

撥打pick_random_color後不需要括號嗎?

color = this.pick_random_color(); 

你似乎什麼做的是分配colorpick_random_color功能,不執行它。

2

你忘記了parens。你必須添加()到this.pick_random_colors

2

這是因爲this.pick_random_color是一個函數的引用。您應該通過編寫this.pick_random_color()來執行此功能。

但要確保this關鍵字是指原始對象