정적 동적 멤버
js의 객체지향 모방을 객체지향 관련 개념을 사용하여 설명하겠습니다. 왜냐하면 js는 다른 언어와 달리 객체지향 언어와 관련된 기능은 없지만 몇 가지를 통해 객체지향을 모방할 수 있기 때문입니다. 기법. 나는 JavaScript의 이러한 측면을 객체 지향 개념으로 설명하기 위해 동일한 개념을 사용합니다. 왜냐하면 두 측면이 유사하게 동작하기 때문입니다.
js에는 다음과 같은 함수가 있습니다
function test(){
var var_value;
this.this_value;
}
그 중 var_value는 정적 멤버이며 this_value는 동적 멤버입니다.
정적 멤버는 클래스 자체와 연결되어 있으며 클래스 수준에서만 호출할 수 있습니다. 이 기능은 인스턴스화된 객체의 메모리에 var_value의 복사본 하나만 유지되며 메모리를 너무 많이 차지하지 않는다는 것입니다. 하지만 상속의 관점에서 파생된다면 문제가 생기고 파생될 수 없다는 단점도 있습니다. 따라서 하위 클래스를 파생시키려는 경우 이 메서드를 사용하면 안 됩니다.
객체와 연결된 동적 멤버입니다. 이러한 접근 방식을 개방형 접근 방식이라고 합니다. 이 클래스의 각 개체에는 메모리에 속성과 메서드의 복사본이 있습니다. 즉, 인스턴스화된 개체 수만큼 많은 메모리 복사본이 있습니다. 이는 효율성 측면에서는 좋은 것은 아니지만, 실용성은 상대적으로 높다. 많은 메모리를 차지하지만 몇 가지 기술을 사용하여 메모리 오버헤드를 최대한 줄일 수도 있습니다.
지금은 여기까지만 이야기하겠습니다. 시간이 좀 있을 것 같습니다. 그러나 향후 에세이에서는 더 깊은 분석을 위해 더 많은 예를 결합할 것입니다.
정보의 캡슐화 및 은폐
간단히 말하면 정보를 처리하는 방법입니다. 숨김이 목적이고, 캡슐화는 목적을 달성하기 위해 사용되는 기술입니다. 캡슐화는 객체 내부에 데이터 표현 및 구현 세부 정보를 숨기는 것으로 정의할 수 있습니다. 위에서 언급한 멤버 문제는 정보를 처리하는 방법이기도 하며 이러한 멤버를 사용하여 캡슐화하는 방법도 있습니다.
일반적으로 사용되는 캡슐화 기반은 범위, 중첩 함수 및 클로저입니다. 이러한 개념은 서로 겹치므로 목표를 달성하려면 함께 사용해야 합니다. 구체적으로 어떻게 캡슐화할지에 대해서는 설명하기 어렵습니다. 향후 에세이에서는 더 많은 예를 결합하여 더 심층적인 분석을 하도록 하겠습니다.
캡슐화의 장점은 내부 데이터의 무결성과 논리를 유지하고 변수에 제한과 제약을 가한다는 것입니다. 모듈 간의 결합을 약화시킵니다.
단점은 다른 언어와 달리 js에서 캡슐화를 구현하기 어렵기 때문에 대부분의 캡슐화된 js 코드가 복잡하다는 것입니다. 이는 또한 js 유연성의 양날의 검이기도 합니다. 또한 범위를 처리하는 데 더 많은 시간이 필요하고 강력한 디버깅 도구에 의존하는 캡슐화된 코드를 디버깅하는 것이 더 어렵습니다. 프로그램이 디자인 패턴을 사용한다면, 특정 패턴에 익숙하지 않은 프로그래머에게는 이해하기 어려울 것입니다. 이를 위해서는 좋은 코드 주석이나 문서의 도움이 필요합니다.