2014-06-17 3 views
1

자식 객체가 콜백 함수를 실행할 때마다 부모 객체의 속성을 설정하고 싶습니다. 나는 다음과 같은 코드를 한Javascript - 자식 콜백에서 부모 객체 업데이트

: 나는 this.namethis.callback가 호출 될 때마다 업데이트 할

function Track(id) { 
    this.callback = function(args) { 
     this.name = args; 
    } 

    this.child = new objectName(this.callback, property); 
    this.name = this.child.name; 
} 

을 원하는 ...이 작업을 수행 할 수있는 방법이 있습니까?

답변

0

일반적인 범위 지정 문제입니다. this은 콜백 호출시 부모 개체를 참조하지 않습니다.

대신을 시도해보십시오

function Track(id) { 
    var that = this; 
    this.callback = function(args) { 
     that.name = args; 
    } 

    this.child = new objectName(this.callback, property); 
    this.name = this.child.name; 
} 

편집 : this 문제의 원인이 될 수있는 이유를 잘 설명은 참조 멀린의 코멘트를. 이 문제를 해결할 수있는 다른 방법이있을 수도 있습니다. 즉, bind()을 사용하는 것입니다.하지만 부모를 objectName 컨스트럭터로 전달해야합니다.

+0

설명이 올바르지 않습니다. 'this'가 가리키는 점은'objectName'이 그것을 어떻게 호출하는지에 달려 있습니다. [이 질문을보십시오] (http://stackoverflow.com/questions/15498508/unable-to-access-the-object-using-this-this- points-to-window-object) – merlin

+0

'this'는 거의 함수에 대한 참조가 아닙니다. – Bergi

+0

완벽한 감사합니다! Kevin의 답변은 완벽하게 작동했으며 Merlin의 다른 질문에 대한 지침은 계몽적인 설명이었습니다. 온갖 위대한 답변들. – blisstdev

관련 문제