2011-11-27 163 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关键字是指原始对象