2011-11-28 2 views
0

JavaScript로 객체를 만드는 다음 코드가 있습니다. 프로토 타입을 사용하여 함수 및 생성자를 정의합니다.JS this/bind가있는 프로토 타입 범위

function objectClass(){ 
    this.variables = new Array(); 
} 

objectClass.prototype = 
{ 
    contructor: objectClass, 

    setInfo: function(){ 
     $.ajax({ 
      url: "info.json", 
      success: function(){ 
       //for each json element returned... 
       this.variables.push(json[i]); 
      } 
     }); 
    } 
    getInfo: function(){ 
     return this.variables; 
    }, 
} 

이것은 내가 수행하려고 시도하는 것과 비슷한 예입니다. obj.getInfo()를 호출 할 때 변수 배열을 반환 할 수 있어야합니다. 항상 오류가 발생합니다. 나는 이것이 "this"가 아약스 성공 함수의 범위를 가리키기 때문이라고 생각한다.

개체 변수를 참조하는 방법에 대한 아이디어가 있으십니까?

+1

코드가 구문 오류로 가득 차서 실행되지 않습니다. – Esailija

답변

4

맞습니다. this 값은 자동으로 전달되지 않으므로 인스턴스로 설정되지 않습니다. 이 강제로, 당신은 $.ajax이 허용하는 context 속성을 사용할 수 있습니다 :

$.ajax({ 
    context: this, // `this` is the instance here 

이 지정한 하나 성공 콜백 내부 this 값을 설정합니다.