부모로부터 자식 객체로 상속 된 메서드에서 변수에 대한 액세스 가능성을 연구하고 있습니다.JavaScript로부터의 변수 액세스 상속 된 메서드
var Parent = function() {
var self = this;
this.init = function() {
self.name = 'Abram';
};
this.getName = function() {
alert('self.name = ' + self.name);
};
this.init();
};
와 자식 클래스 :
Function.prototype.extend = function(child) {
var prototype = new this;
child.prototype = prototype;
return child;
};
그래서 내가 부모 클래스를 정의
:상속은 자녀의 생성자의 프로토 타입 부모의 인스턴스를 연결하는 수행
var Baby = Parent.extend(function(name) {
var self = this;
this.init = function() {
self.name = name;
};
this.init();
});
// instantiate a child object:
var baby = new Baby('Jimmy');
// call the inherited method:
baby.getName(); // undefined!
getName
메서드는 올바르게 상속되지만 self.name
회원에게는 액세스 권한이 없습니다.
어떻게하면 하위 클래스 인스턴스의 범위에서 사용할 수 있습니까?
alert(baby.getName)
와 방법의 시체를 확인 내가 얻을 :
function() {
alert("self.name = " + self.name);
}
.
그러나 왜 self
변수가 로컬에서 해결되지 않습니까?
고마워요. @ 포인트, 나는 이미 this.name으로 self.name을 변경해 보았습니다. (아직 닫히지 않은 그 레벨에서) 작동하지만, 로컬로 이름이 지정된 멤버는 정확하게 내가 얻고 자하는 이점입니다. 효과적인 코드 재사용을 위해, 예를 들어 중첩 된 함수 범위에서 munge합니다. –
글쎄, 문제는 "부모"함수에서 "self"의 바인딩이 항상 원래의 객체 인스턴스에 있다는 것입니다; 거기 때문에 폐쇄의 "붙어있어". – Pointy