2013-08-28 5 views
1

JavaScript와 관련하여 캡슐화 란 무엇입니까? 내가 모질라의 웹 사이트에서이 문 (link) 읽은 후 혼란 스러워요 : 앞의 예에서JavaScript 컨텍스트에서 캡슐화 란 무엇입니까?

캡슐화

을, 학생은 사람 클래스의 산책() 메소드를 구현하는 방법을 알 필요가 없다 ,하지만 여전히 그 방법을 사용할 수 있습니다; 학생 클래스는 을 변경하지 않으면 해당 메소드를 명시 적으로 정의 할 필요가 없습니다. 이것을 캡슐화 (encapsulation)라고 부르는데, 이는 모든 클래스가 부모 클래스의 메소드를 상속 받고 변경하고자하는 것을 으로 정의하기 만하면됩니다.

캡슐화가 클래스 멤버를 숨기는 것으로 이해했지만 Mozilla 사이트의 예에서는 단순한 상속으로 보입니다.

+0

@Downvoter, 설명해주십시오. 나는 질문을 향상시킬 것이다 – MyTitle

+2

이것은 공정한 질문이다.참조 된 텍스트는 캡슐화를 명확하게 설명하지 않으며 상속을 사용하여 마지막 문장에서이를 잘못 표시합니다 (IMHO). – iamnotmaynard

+0

프로그래밍 언어와 마찬가지로 JavaScript의 맥락에서 동일한 의미입니다. http://en.wikipedia.org/wiki/Encapsulation_(object-oriented_programming), –

답변

0

walkPerson에 구현됩니다. Student은 구현 방법을 변경할 수 없으며 함수 만 완전히 재정의 할 수 있습니다.


당신은 당신이 부분이 아니라 전체 기능보다 상위 기능의를 오버라이드 (override) 할 수있는 프로그래밍 언어를 디자인 할 수 있습니다. 이 프로그래밍 언어에는 상속이 있지만 캡슐화는 없습니다.

물론 자식이 부모 함수의 일부를 오버라이드하는 경우 이는 자식 및 부모 구현이 결합되었음을 의미합니다. 이것은 일반적으로 나쁜 습관으로 간주됩니다. 이것이 대부분의 언어가 캡슐화를 시행하는 데 필요한 이유이지만, 절대적으로 필요한 것은 아닙니다.


아마도 좋은 유추는 플러그인 메커니즘입니다. 여러 가지 방법으로 플러그인을 작성할 수 있습니다. 이벤트 후크를 사용하거나 영리한 상속을 사용하지만 인라인 코드를 대체 할 수도 있습니다. 이제는 이것이 어리 석다 고 생각하기 전에, 대중적인 포럼 소프트웨어 phpBB의 구버전이 실제로 이것을했습니다. 간섭을 일으킬 수있는 두 가지 플러그인을 설치하면 어떤 일이 일어날 지 알려주지 않으면 어떻게 될지 상상할 수 있습니다.

+2

확인. 그러나 상속이 아닌 캡슐화가 가능합니다. – MyTitle

+0

상속에 캡슐화가 필요하지 않습니다. 캡슐화하지 않고 상속을 가질 수 있지만 캡슐화가없는 것은 좋은 사례를 많이 위반합니다. – Halcyon

+0

여기에 단어로 놀 수도 있지만 * 허용되지 않습니다 * 내게 잘못된 것 같습니다. 구현 방법에 액세스하려면'this.walk.toString() '을 자주 수행 할 수 있기 때문입니다. * 어떻게하면 더 적합한 지 알 필요가 없습니다. – plalx

1

즉, 사용하는 데 사용할 도구를 만들 필요가 없음을 의미합니다.

그런 것들을 추상화 할 수있게되면 프로그래밍이 훨씬 덜 스트레스를받습니다.


당신이 이제까지 자바 스크립트에서 alert() 방법을 사용 했습니까?

alert이 브라우저와 통신하는 방법과 브라우저가 디스플레이 및 모든 레이어 사이에서 통신하는 방법에 신경을 쓰면 약간 압도감을 ​​느낍니다.

글꼴을 렌더링하는 데 사용되는 베 지어 곡선이나 ok 단추를 구현하는 방법이나 alert을 만드는 다른 모든 코드를 걱정하지 않으려 고합니다. 아시다시피 JavaScript로 alert("txt")을 작성할 수 있으며 대화 상자가 나타납니다.

관련 문제