클로저, 기호, WeakMap, 클래스 비공개 필드 및 프록시는 JavaScript에서 비공개 변수를 만드는 데 사용할 수 있는 기술 중 일부입니다. 각 기술에는 장점과 단점이 있으므로 요구 사항에 가장 적합한 기술을 선택하는 것이 중요합니다.
다른 많은 프로그래밍 언어와 마찬가지로 JavaScript에도 개인 변수와 공용 변수라는 개념이 있습니다. Private 변수는 동일한 범위에 속하는 코드로만 액세스하고 변경할 수 있지만, Public 변수는 모든 코드에서 액세스하고 변경할 수 있습니다. JavaScript에서 개인 변수를 생성하는 다양한 기술을 살펴보겠습니다.
Closure 메소드는 JavaScript에서 비공개 변수를 생성하는 방법입니다. 부모 함수가 완료되고 반환된 후에도 부모 함수의 범위에 정의된 변수에 액세스할 수 있는 경우 함수는 클로저입니다. 함수 내부에 변수를 정의하여 변수가 비공개가 되고 해당 함수 내부의 코드로만 액세스할 수 있도록 할 수 있습니다.
으아악
위 예제의 createPrivateVariable 함수는 getValue 및 setValue 메소드가 있는 객체를 반환합니다. 이러한 메소드는 액세스 권한이 있으므로 상위 함수에 선언된 privateVariable 값을 검색하거나 변경할 수 있습니다. 함수 외부에서 privateVariable에 접근하려고 하면 참조 오류가 발생합니다.
기호적 데이터 유형을 사용하는 것은 개인 변수를 생성하는 두 번째 방법입니다. 기호는 문자열이 아닌 별개의 식별자이므로 속성 키로 사용할 수 있습니다. 이는 고유하기 때문에 외부 프로그램에서 쉽게 액세스하거나 변경할 수 없습니다.
으아악위 코드를 다음과 같이 사용할 수 있습니다 -
으아악이 예에서는 privateVariable이라는 기호가 정의되어 객체의 속성 키로 사용되었습니다. Symbol이기 때문에 점 표기법을 사용하여 속성 값을 얻을 수 없지만 대괄호 표기법을 사용하여 객체를 통해 속성 값에 액세스할 수 있습니다.
WeakMaps는 개인 변수를 구성하는 세 번째 방법으로 사용될 수 있습니다. JavaScript 엔진은 객체를 키와 연결할 수 있는 WeakMap의 키-값 쌍만 약하게 참조합니다. 이렇게 하면 개인 변수에 대한 참조를 잘못 유지하기가 더 어려워집니다. 키에 대한 다른 참조가 없으면 가비지 수집기가 키-값 쌍을 파괴하기 때문입니다.
으아악
이 예에서는 객체의 개인 변수를 보관하기 위해 privateVariables라는 WeakMap을 만듭니다. get() 메소드는 set() 메소드를 사용하여 객체에 연결한 후 전용 변수를 얻는 데 사용됩니다. 그러나 전용 변수는 개체에 대한 참조가 있는 경우에만 액세스할 수 있으므로 개체가 구성한 범위 외부에서는 액세스할 수 없습니다.
객체 지향 클래스 구문을 사용하여 개인 변수를 생성할 수도 있습니다. JavaScript의 class 키워드를 사용하면 객체의 템플릿 역할을 하는 클래스를 정의할 수 있습니다. 클래스는 변수를 정의하고 변수 이름 앞에 # 기호를 추가하여 개인 변수를 생성할 수 있습니다. 이는 실험적인 기능이며 개인 변수를 나타냅니다. 이 기능은 아직 널리 지원되지 않으므로 프로덕션 코드에서는 사용하지 않는 것이 좋습니다.
으아악
이 예에서는 MyClass라는 클래스가 개인 변수 #privateVariable, getValue 및 setValue를 사용하여 구성됩니다. 참조 오류는 클래스 외부의 메서드가 클래스 내부의 메서드로만 액세스할 수 있는 전용 변수에 액세스하려고 시도하는 경우 발생합니다.
마지막으로 프록시 개체를 사용하는 것은 개인 변수를 구성하는 또 다른 옵션입니다. 다른 개체의 동작을 가로채거나 변경하는 데 사용할 수 있는 개체를 프록시라고 합니다. 프록시에 개체를 캡슐화하면 프록시가 있는 코드로만 액세스할 수 있는 전용 변수를 만들 수 있습니다.
으아악
이 예에서는 getter 및 setter 메서드가 있는 핸들러가 있는 프록시가 구축되었습니다. 이러한 메서드는 프록시 외부에 정의된 전용 변수의 값을 검색하거나 변경할 수 있으며 해당 값에 액세스할 수 있습니다. 그러나 참조 오류로 인해 프라이빗 변수는 프록시 외부에서 액세스할 수 없습니다.
위 내용은 JavaScript에서 개인 변수를 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!