• 카테고리

    질문 & 답변
  • 세부 분야

    웹 개발

  • 해결 여부

    미해결

질문이요

21.03.25 15:32 작성 조회수 252

0

Q1. 매개변수와 객체의 차이가 뭔가요?

() 매개변수에 하나만 들어올 수 있다고 하셨는데

객체에는 여러 속성이 들어 올 수 있는건가요?

추후에 추가될 거라서 지금은 하나의 속성만 있지만

객체로 써준거라고 하셨는데..ㅠ

매개변수에는 하나만 들어올 수 있는데

객체가 하나를 묶어주는 한 오브젝트인건지..ㅠ

음,, 그러니까

매개변수는 하나이고

이 한 오브젝트 안에 들어가있는 여러 속성이 객체인건가요?

Q2.

그리고 생성자 함수 매개변수 안에 info로 지정해주셨는데(생성자 함수)

xPos이 있는 곳에는 info라는 매개변수가 없는데 (캐릭터 생성자 인스턴스)

어떻게 연결되어 작동 되는거지요?ㅠㅠ

하..

생성자 함수에 info라는 매개변수를 만들어 줬고

생성자 인스턴스에 값인 오브젝트를 넣어준것이기 때문에

xPos가 잘 나오는 것인가요

new Character 이라는 것을 통해서 연결이 자동으로 된것인가요..ㅠㅠ

Q3. 창이 왔다갔다해서 더 헷갈리는 듯하네요.

마지막으로

this.mainElem.style.left = info.xPos+'%';

이부분이 원래는 12%로 한 곳에만 찍힐 수 있는데

위와 같이 해줌으로써 아무곳이나 찍히게 하려고 하는 건가요?

그런데 왜 left만 한정해줬는지요?

stage x좌표 부분이면 어디에나 다 찍혀야하는데 말이지요..ㅠ

그 12%로 해줘서 그런가요?

어렵습니다...ㅠ

Q4. 위에 생성자 함수와

밑에 stage.addEventListener('click', function(e) {

new Character({

xPos: e.clienX / window.Innerwidth * 100

})

});

this.mainElem.style.left = info.xPos+'%';

그리고 얘네는 생성자 함수 바로 밑에 있고

생성자 함수랑 인스턴스랑 다른 창에 있고 해서 더 헷갈리네요.

원래는 생성자 함수 밑에 바로 생성자 인스턴스가 있는거 아닌가요?

답변 1

답변을 작성해보세요.

1

1.
아래 두 함수를 비교해 보세요.

function sayHello(name, age, job) {
    console.log(`안녕하세요, 제 이름은 ${name}이고 나이는 ${age}, 직업은 ${job}입니다.`);
}

이 경우, 호출할 때 sayHello('김미미', 20, '학생'); 이렇게 인자의 순서를 맞춰서 호출해야 결과가 정확히 나오겠죠? 만약 실수로 sayHello(20, '김미미', '학생'); 이렇게 순서를 잘못 넣어 호출했다면 콘솔에는
안녕하세요, 제 이름은 20이고 나이는 김미미, 직업은 학생입니다. 이렇게 나오겠지요~

반면에, 매개변수를 객체(Object)로 처리하면
function sayHello(obj) {
    console.log(`안녕하세요, 제 이름은 ${obj.name}이고 나이는 ${obj.age}, 직업은 ${obj.job}입니다.`);
}

이 경우에는 호출할 때
sayHello({ age: 20, name: '김미미', job: '학생' });
이런 식으로 객체의 속성에 값을 넣으면 되기 때문에, 순서가 상관이 없습니다.
매개변수 개수가 엄청 많이 필요한 함수일수록 이런 방식이 유용하겠지요~

2.
바로 위에서 설명한, 매개변수를 객체로 이용한 것입니다. 1번의 예시에서는 인자로 객체를 받을 매개변수 이름을 obj라고 한 것이고, 말씀하신 부분에서는 변수 이름을 info라고 한 것 뿐이지요. 매개변수는 우리가 만드는 변수이기 때문에 이름을 직접 마음대로 지을 수 있습니다.

3.
x좌표는 가로 위치이기 때문에 left만 지정해 준 것입니다. y좌표도 필요하다면 top도 함께 설정해주면 되겠지요~

4.
인스턴스는 우리가 직접 사용할 객체이기 때문에, 필요한 곳 어디에서는 만들어질 수 있습니다.
꼭 어디에 위치해야한다, 이런 규칙이 있기는 어렵습니다. 언제 어디서 필요할지는 만드는 기능에 따라 달라지는 것이니까요. 우리 예제처럼 클릭할 때마다 만들어질 수도 있고, 특정 데이터 로드가 끝나면 만들어질 수도 있고.. 그냥 페이지가 로드되면 자동으로 몇개를 만들 수도 있고.. 그런거지요~