Вчера я сделал простую игру на javascript, используя coffeescript.Большая часть игры проходит через объект game
, который создается после того, как пользователь отправляет форму на странице.Форма содержит переменные и параметры для игры, в которую они хотят играть.
Все отлично работает во время игры, но когда игра заканчивается, у меня снова появляется форма, и если пользователь отправляет форму второй раз, он должен вызвать ту же функцию и перезаписать старую переменную game
с новым экземпляром объекта game
, но я заметил, что он не сбрасывает все существующие переменные и параметры, установленные исходным игровым объектом.
Есть ли способ полностью удалить старый объект и его параметр при создании нового экземпляра?
Вот мой объект, объявленный в качестве класса в coffeescript.
window.Game = class Game
constructor: (options) ->
players = options[0] ? '1'
p1 = p2 = false
@player1 = new Player(options[1] ? 'X', p1 )
@player2 = new Player(options[2] ? 'O', p2 )
@cells = ($ "section#board .cell")
@cells.each ->
$(@).text(" ")
$(@).removeClass('score')
@currentPlayer = @player1
@availableMoves = 9
($ 'section#board div.cell').bind
click: @.makeMove
mouseleave: @.resetCell
setTimeout(@.computerMove(@currentPlayer), 1000) if parseInt(players) is 0
Я вызываю это после отправки формы через эту функцию.
($ '#gameOptions').submit (event) ->
event.target.checkValidity()
event.preventDefault()
game = new Game [($ '#player-count') .val(),
($ '#player-1-type').val(),
($ '#player-2-type').val()]
Даже при добавлении вызова выполните delete game
перед повторной реализацией игрового объекта.Призрачные переменные сохраняются.Я написал в coffeescipt для краткости и повышения читабельности.