본문 바로가기

카테고리 없음

궁금한점 : 속성 키로 사용된 심볼 객체의 값 부르기

req 객체임

 // req 라는 이름의 객체임
  {
  	// 앞에 추가내용있음 ..., 
  	[Symbol(kHeaders)]: {
    host: '127.0.0.1:4000',
    'accept-encoding': 'gzip, deflate',
    authorization: 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcklkIjoia2ltY29kaW5nIiwiZW1haWwiOiJraW1jb2RpbmdAY29kZXN0YXRlcy5jb20iLCJjcmVhdGVkQXQiOiIyMDIwLTExLTE4VDEwOjAwOjAwLjAwMFoiLCJ1cGRhdGVkQXQiOiIyMDIwLTExLTE4VDEwOjAwOjAwLjAwMFoiLCJpYXQiOjE2NDU1MjI4NzJ9.JgcPwAaO6Lqtc0lOGh-stxDyTm6S750vzg-6G28vuWM',
    connection: 'close'
  	},
  }

이  Sybol을 가지는 키의 값을  찾고 싶음

 

 

찾을 때 사용한 방법

  console.log(req.headers);

 

해서 나온 값

{
  host: '127.0.0.1:4000',
  'accept-encoding': 'gzip, deflate',
  authorization: 'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MSwidXNlcklkIjoia2ltY29kaW5nIiwiZW1haWwiOiJraW1jb2RpbmdAY29kZXN0YXRlcy5jb20iLCJjcmVhdGVkQXQiOiIyMDIwLTExLTE4VDEwOjAwOjAwLjAwMFoiLCJ1cGRhdGVkQXQiOiIyMDIwLTExLTE4VDEwOjAwOjAwLjAwMFoiLCJpYXQiOjE2NDU1MjMxODV9.c2iAsOeAb0S-FdQ0ArUfLIUAcClpYZCK73nefV7xeAA',
  connection: 'close'
}

 

여기서 의문점

Symbol(kHeaders) === headers // ???

console 에 찍어본 결과

당연히 다름 

 

 

 

왜 될까??

 - 찾아보니 특정 값을 숨길때 symbol을 key name으로 사용한다는데 왜 불러지지?

 

++reference

 

 

속성 키로서의 심볼 래퍼 객체(symbol wrapper object)

심볼 래퍼 객체를 속성 키로 사용하면, 이 객체는 래핑된 심볼로 강제 변환됩니다(When a Symbol wrapper object is used as a property key, this object will be coerced to its wrapped symbol):

var sym = Symbol("foo");
var obj = {[sym]: 1};
obj[sym];            // 1
obj[Object(sym)];    // still 1

 

 

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Symbol

 

Symbol - JavaScript | MDN

Symbol() 함수는 심볼(symbol) 형식의 값을 반환하는데, 이 심볼은 내장 객체(built-in objects)의 여러 멤버를 가리키는 정적 프로퍼티와 전역 심볼 레지스트리(global symbol registry)를 가리키는 정적 메서드

developer.mozilla.org