JavaScript의 세계에서는 모든 메소드가 공개이고 비공개 메소드를 기술적으로 정의하는 것은 불가능하다고 생각한 적이 있습니다. 오늘 다시 깨달았습니다.
var Person = function(name,sex){
this.name = name ;
this.sex = 성별;
경고("비공개 메서드가 호출됩니다! 비공개 멤버 값: " _privateVariable); ~
Alert("이름: " this .name ", 성별: " this.sex);
var p = new Person("나무 아래 Bodhi Yang Guo","male");
p.sayHello() ;
//p.privateMethod();//여기에 오류가 보고되며, 인스턴스에서 프라이빗 메서드를 호출할 수 없습니다.
Alert(p._privateVariable);//Display: undefine
설명: 클래스의 생성자에 정의된 함수는 비공개 메서드이며 생성자에서 var로 선언된 변수도 동일합니다. 따라서 비공개 변수입니다. (단, C#과 같은 강타입 언어에서는 private 멤버 개념에 차이가 있는데, 예를 들어 생성자가 아닌 메서드에서는 호출할 수 없습니다.)
마찬가지로 set 및 get과 같은 속성의 캡슐화를 구현할 수도 있습니다
코드 복사
코드는 다음과 같습니다.
var Person = function(){
}
var p = new Person()
p.setSalary( 1000) ;
alert(p.getSalary());//1000 반환
alert(p.salary);//정의되지 않은 반환
참고: js의 "변수 범위" , "함수 호출 컨텍스트(this)", "클로저" 및 "프로토타입 체인"은 실제로 이해하는 데 시간을 투자할 가치가 있습니다. 이러한 장애물을 극복하고 나면 JS 초보자(예: 저)의 수준이 될 것이라고 믿습니다. 새로운 레벨에 도달하세요.