2012-10-17 1 views
1

유용한 JavaScript 클래스 중 하나를 TypeScript로 다시 쓰려고합니다. JavaScript 클래스에서 private 필드를 구현하기 위해 closure 변수 self를 사용합니다. 이벤트 핸들러에서 유용합니다 (예 : onkeypress). 이벤트 호출자와 클래스의 현재 인스턴스를 아는 것이 중요합니다.TypeScript를 사용하여 JavaScript의 실제 개인 필드에 대한 폐쇄

var MyClass = function (valueHolder) { 
      var self = this; 
      this.valueHolder = valueHolder; 

      MyClass.prototype.DoUsefullactions = function (value) { 
       alert(value); 
      } 

      MyClass.prototype.onclickForHolder = function (e) { 
       var value = $(this).val(); //value from attached input 
       self.DoUsefullactions(value); 
      } 

      MyClass.prototype.GetSelf = function() { 
       return self; 
      } 

      this.valueHolder.onclick = this.onclickForHolder; 
     } 

나는 타이프에 this.self 구문없이 클래스의 모든 방법을 사용할 수 및 자바 스크립트 방식으로 진정한 private 멤버를 만들 것입니다 무엇 무엇을 폐쇄 변수 만드는 방법을 를 찾을 수 없습니다.

+2

시도하는 것은 좋지 않다. 모든 생성자 호출에이 값을 할당합니다. –

+0

감사합니다. 예를 들어 – Menotaurus

답변

3

대체 기능 구문이 있습니다. 간단하게 사용

MyClass.prototype.onclickForHolder = e => { 
    var value = $(e.target).val(); //value from attached input 
    this.DoUsefullactions(value); 
} 

this가 외부 this을 참조하고 타이프가 뒤에서 자기 형 변수를 추가합니다.

+0

고맙습니다. 문제 해결을위한이 버전을 알고 있습니다. 저는이 추상화 된 솔루션이 TypeScript에 존재한다고 가정합니다. – Menotaurus

1

는 생성자 함수의 프로토 타입 속성을 할당

MyClass.prototype.onclickForHolder =(ev:Event) =>this.DoUsefullactions(this,ev); 
+0

왜 시도해야하는지 설명하면 감사하겠습니다. –

관련 문제