我昨天在javascript中使用coffeescript做了一個簡單的遊戲。遊戲的大部分運行在用戶在頁面上提交表單後實例化的game
對象中。該表格包含他們想要玩的遊戲的變量和選項。如何完全清除javascript對象的屬性值和引用?
在遊戲中一切正常,但遊戲結束後,我再次出現表單,如果用戶第二次提交表單,它應該調用相同的函數,並用新實例覆蓋舊的game
變量game
對象,但我注意到它不重置原始遊戲對象設置的所有現有變量和參數。
當新實例被實例化時,有什麼辦法可以完全刪除舊對象及其參數嗎?
這是我的對象在coffeescript中被聲明爲'class'。
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
也是如此。幻影變量依然存在。爲了簡潔起見,我發佈了咖啡信息以提高可讀性。
[如何快速清除Javascript對象?](http://stackoverflow.com/questions/684575/how-to -quickly-clear-a-javascript-object) – maxedison 2012-03-05 22:52:16
possible dup http://stackoverflow.com/questions/742623/deleting-objects-in-javascript – elclanrs 2012-03-05 22:52:28
這裏已經被問過很多次了。只是搜索來刪除對象的JavaScript。 – maxedison 2012-03-05 22:52:33