프로토타입 정의 함수에서 전용 멤버 변수에 액세스
JavaScript에서 생성자 내에 선언된 전용 변수는 메서드에 직접 액세스할 수 없습니다. 프로토타입에 정의되어 있습니다. 이 시나리오는 다음 코드 조각에서 볼 수 있습니다.
TestClass = function(){ var privateField = "hello"; this.nonProtoHello = function(){alert(privateField)}; }; TestClass.prototype.prototypeHello = function(){alert(privateField)}; // This executes successfully: t.nonProtoHello() // This fails: t.prototypeHello()
이 동작은 생성자 내에 정의된 메서드가 정의된 범위에 대한 액세스로 인해 전용 변수에 액세스할 수 있기 때문에 발생합니다. 그러나 프로토타입 정의 메서드는 생성자의 범위 내에서 생성되지 않으며 해당 지역 변수에 대한 액세스가 부족합니다.
액세스 요구 사항 해결
직접적인 방법은 없지만 프로토타입 정의 메서드에 대한 개인 변수에 대한 액세스 권한을 부여하려면 원하는 기능을 달성하기 위한 대체 접근 방식이 있습니다.
예:
function Person(name, secret) { // public this.name = name; // private var secret = secret; // public methods with controlled access this.setSecret = function(s) { secret = s; } this.getSecret = function() { return secret; } } // Prototype-defined method using getters Person.prototype.spillSecret = function() { alert(this.getSecret()); };
요약하면 프로토타입 정의 메서드에서 프라이빗 변수에 액세스하는 것은 본질적으로 제한되어 있지만 getter 및 setter를 사용하거나 간접 액세스를 사용하면 유연한 솔루션이 제공됩니다. 이러한 변수에 대한 액세스를 제어할 수 있습니다.
위 내용은 JavaScript의 프로토타입 정의 함수에서 비공개 멤버 변수에 어떻게 액세스할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!