[자바스크립트] 질문있습니다
조회수 622회
안녕하세요
크롬 개발자도구 보다 궁금한점이 있어서 질문드립니다. 아래와 같은 경우
아래쪽과 같이 가끔 흐릿한 프로퍼티들이 있는데 이것이 무엇인지 궁금합니다.
실제로 children 경우 _children 도 있고 enabled 도 _enabled이 있는데
왜 흐릿하게 표현하고, 어떤 프로퍼티를 사용해야 하는지 궁금합니다..
감사합니다
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
저 흐리게 나타나는 건 보통 프로토타입과 그 안에 속한 메소드들이 그렇고요, 가장 쉽게 볼 수 있습니다.
또 다른 경우로는 프로퍼티자체는 존재하는데 getter가 invoke되지 않은 상태를 나타내기도 합니다. 이 때에는 해당
(...)
을 누르면 그때서야 getter를 호출하여 값을 가져와 노출시킵니다. 즉, getter를 따로 지정한 프로퍼티는 저렇게 나오는 거죠.- property에
get
키워드로 getter를 정의 하는 경우, 이 경우는 getter가 따로 흐릿하게 표시됩니다. 질문의 경우와는 다르긴 해요.
let obj = { num: 1, get prop() { return this.num++; } };
- 위의 방식과는 동작은 비슷하나 소소한 차이를 보이는게
defineProperty
로getter
를 정의하는 경우입니다. 아마 질문에 첨부하신 스샷에서 보여지는 프로퍼티는 이렇게 정의되어 있을 가능성이 높아요.
var o = {a: 0}; Object.defineProperty(o, 'b', { get: function() { return this.a + 1; } });
두 경우 모두 console에서
(...)
으로 표시되며 마우스로 이걸 클릭했을때 evaluation되어 출력됩니다.그래서 무얼 사용해야 되느냐... 흐음...
문서에 나와있는거면 흐릿한거 그냥 사용해도 될 거에요.
오히려 밑줄이 있는 것은 여기저기서 통용되는 컨벤션으로 봤을때, 클래스의 private와 같이 객체 내부에서만 사용한다는 것을 표시한 네이밍이거나 외부 노출을 꺼려하는 프로퍼티일 경우가 많거든요
- property에
댓글 입력