본문 바로가기
코딩테스트/리디야 할리 JS Quiz

JS Quiz 5-8. 객체 접근법과 방법 / 얕은 복사 / 원시 타입과 객체 타입 / 클래스

by 학습하는 청년 2024. 3. 31.

5. Which one is true?

const bird = {
  size: 'small',
};

const mouse = {
  name: 'Mickey',
  small: true,
};

정답 A // 표기법의 접근순서와 이해

 

A. mouse 객체에는 bird를 프로퍼티 네임이 존재하지 않는다. 주의해야 할 점은 mouse.(bird.size = small)로 해석하여 mouse.small이라서 인식하면 안 된다는 사실이다! 점표기법은 앞에서부터 접근한다!!

 

B. mouse[small] 이므로 true라는 값을 갖는다.

C. 프로퍼티 네임에는 " "를 통해 공백이 있는 것을 하나의 문자열로 만들어주는 역할을 하므로, mouse.bird.size 즉 B와 동일하다. 


6. Which one is true?

let c = { greeting: 'Hey!' };
let d;

d = c;
c.greeting = 'Hello';
console.log(d.greeting);

정답 A // 얕은 복사에 대해 아는지를 묻는 문제

 

d = c;를 풀어보면, let d = { greeting: 'Hey!' }; 이다.

즉, { greeting: 'Hey!' }라는 값에 접근하는 변수명이 d와 c가 된 것이다.

그런데 c.greeting = 'Hello';를 선언함으로써, 사실상 'Hello'라는 값으로 재할당 된 것이라 볼 수 있다.

 


7. Which one is true?

let a = 3;
let b = new Number(3);
let c = 3;

console.log(a == b);
console.log(a === b);
console.log(b === c);

정답 C // 원시 타입과 객체 타입에 대해 아는지를 묻는 문제

 

let b는 내장 객체 Number()를 사용하여 3을 선언한 것이므로, 값으로써는 원시 값 3과 같으나 typeof 연산자를 통해 비교하면 다른 타입이 나온다.

 


8. Which one is true?

class Chameleon {
  static colorChange(newColor) {
    this.newColor = newColor;
    return this.newColor;
  }

  constructor({ newColor = 'green' } = {}) {
    this.newColor = newColor;
  }
}

const freddie = new Chameleon({ newColor: 'purple' });
console.log(freddie.colorChange('orange'));

정답 D // 클래스 - 아직 안 배워서 모르겠다.

 

아는 선에서 this를 추적해봤으나 실패. 기록해두고, 클래스를 익힌 후 다시 풀자.

둔필승총( 鈍筆勝聰)!!

댓글