我已经在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没有此本机功能。
最佳答案
创建x
和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)
相同。