어제 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
을한다. 유령 변수는 계속 유지됩니다. 간결함과 가독성을 높이기 위해 커피 수첩에 게시했습니다.
가능한 중복 (http://stackoverflow.com/questions/684575/how-to :이 문제를 해결하려면 양식 제출 기능에 바인딩을 해제한다 -quickly-clear-a-javascript-object) – maxedison
possible dup http://stackoverflow.com/questions/742623/deleting-objects-in-javascript – elclanrs
여기에 시간이 많이 있습니다. 그냥 개체 자바 스크립트를 삭제하십시오. – maxedison