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 // ???
당연히 다름
왜 될까??
- 찾아보니 특정 값을 숨길때 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