프로토타입 정의 함수에서 전용 멤버 변수에 액세스
JavaScript에서 생성자 내에 정의된 전용 멤버 변수는 프로토타입에서 액세스할 수 없습니다. 정의된 방법. 이는 다음 코드 조각에서 분명하게 드러납니다.
TestClass = function(){ var privateField = "hello"; this.nonProtoHello = function(){alert(privateField)}; }; TestClass.prototype.prototypeHello = function(){alert(privateField)};
nonProtoHello가 privateField에 성공적으로 액세스하는 동안 프로토타입Hello는 실패합니다.
추론
프로토타입을 포함한 기능 -정의된 메소드는 정의된 범위에 액세스할 수 있습니다. 전용 멤버 변수는 생성자 범위 내에서 정의되므로 프로토타입 정의 메서드에서 액세스할 수 없습니다.
해결책
프로토타입 메서드에서 전용 변수에 대한 액세스를 제공하려면:
예:
function Person(name, secret) { // public this.name = name; // private var secret = secret; // public methods have access to private members this.setSecret = function(s) { secret = s; } this.getSecret = function() { return secret; } } // Must use getters/setters Person.prototype.spillSecret = function() { alert(this.getSecret()); };
이 접근 방식을 사용하면 프로토타입 정의 메서드가 캡슐화를 유지하면서 getter 및 setter를 통해 전용 멤버 변수와 상호 작용할 수 있습니다.
위 내용은 JavaScript의 프로토타입 정의 함수에서 전용 멤버 변수에 액세스하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!