객체 함정 문제

const a = {}; const b = { key: 'b' }; const c = { key: 'c' }; a[b] = 123; a[c] = 456; console.log(a[b]);
  • A: 123
  • B: 456
  • C: undefined
  • D: ReferenceError
 
답은 B
객체 키는 자동으로 문자열로 변환돼요. 객체 a에 키는 객체(b), 값은 123으로 설정하려고 해요.
그러나, 객체를 문자열화 하면 "[object Object]"가 돼요. 그래서 여기서 말하고자 하는 건 a["object Object"] = 123이라는 거예요. 그 후, 같은 일을 다시 시도해요. c는 암묵적으로 문자열화 한 다른 객체에요. 그래서 a["object Object"] = 456이 돼요.
그 후, a[b]를 출력하면 실제로는 a["object Object"]예요. 그냥 456을 설정했기 때문에, 456을 반환해요.