2

我在 coffeescript 中创建了一个类,它带有一个生成 x 和 y 实例变量的 randomInt 方法。但是,当我从此类创建对象时,x 和 y 值是不同的,但两者都是一致的。

这是演示的代码:http: //jsfiddle.net/paulmason411/BvPBG/

class Shape

  getRandomInt = (min, max) ->
    Math.floor(Math.random() * (max - min + 1)) + min

  y: getRandomInt(1,100)
  x: getRandomInt(1,100)

shape1 = new Shape
shape2 = new Shape

alert(shape1.x)
alert(shape2.x)

alert(shape1.y)
alert(shape2.y)​

我需要每个警报值都不同。

我搜索了一个解决方案,并且在其他编程语言中他们使用 srand() 但是 js 没有这个本机功能。

4

1 回答 1

3

x创建and的“实例变量” y@使它们成为这样的变量):

class Shape

  constructor: ->
    @x = Shape::getRandomInt(1,100)
    @y = Shape::getRandomInt(1,100)

  getRandomInt: (min, max) ->
    Math.floor(Math.random() * (max - min + 1)) + min


shape1 = new Shape
shape2 = new Shape

console.log(shape1.x)
console.log(shape2.x)
console.log(shape1.y)
console.log(shape2.y)

其中打印:

48
13
9
86

请注意,该getRandomInt功能已添加到Shape.prototype,并且Shape::getRandomInt(1,100)与 相同Shape.prototype.getRandomInt(1,100)

于 2012-07-23T19:19:55.130 回答