class Piece{
...
spawn(){
...
x;
y;
...
}
const KEY = {
LEFT: 37,
RIGHT: 39,
DOWN: 40
}
Object.freeze(KEY);
const moves = {
[KEY.LEFT]: p => ({ ...p, x: p.x - 1 }),
[KEY.RIGHT]: p => ({ ...p, x: p.x + 1 }),
[KEY.DOWN]: p => ({ ...p, y: p.y + 1 })
}
let p = moves[event.keyCode](board.piece);
원래는 각자 다른 파일에 흩어져있는데
내가 보기에 중요한 부분만 모음
[제일 이해 안가는 부분 1] -> let p = moves[event.keyCode](board.piece);
어케 호출하는거지
[제일 이해 안가는 부분 2 ]-> ({ ...p, y: p.y + 1 })
일단 저런 익명함수에 아무것도 없으면 그냥 거기 있는걸 반환한다고 생각하면 된다는데
...p, y: p.y + 1
이걸 반환하면 뭔 의미인걸까
...연산자는 배열을 펼쳐서 반환하는거라는데 잘 모르겠네... 이해가 잘 안간다
피스 클래스 잘못썼네;; Piece{ x; y; spawn(){ ... } } 이거로 바꿔서 봐주셈... 비밀번호를 모르겠네
아니;;들여쓰기 내가 쓴거 다 어디감
...는 p를 복사해서 반환하는거 아닌교 뒤에 저건 뭐지..
1: moves[event.keyCode]로 moves에 있는 함수를 꺼내고 그걸 호출
2: ({ ...p }) 는 p를 복사하는거랑 비슷하고, y 필드만 덮어씌우는거 기존 객체를 바꾸는게 아니라 y 필드만 바뀐 새 객체를 만듦
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax
함슬람에 그만 정신을 잃고 말으셨군요
그냥 move의 인덱스는 KEY와 동일하고, 함수를 반환함.
반환하는 함수를 바로 호출.
아 위에 답변 달아져있넹