我已经在coffeescript中使用randomInt方法创建了一个类,该方法生成x和y实例变量。但是,当我从此类创建对象时,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没有此本机功能。

最佳答案

创建xy的“实例变量”(@使它们成为此类变量):

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)相同。

07-27 16:32