2012-01-26 5 views
0

콜백 함수를 사용하는 데 익숙하지 않고 특정 UI 요소가 변경 될 때 호출되는 jquery를 통해 위로 연결하려고하는 데 어려움이 있습니다. 이것은 제가하는 일의 매우 단순한 예입니다. 내가 e.SetBorderWidth를 호출하면 10을 함수에 올바르게 전달합니다. 그러나 콜백을 사용하려고하면 SetBorderWidth가 정의되지 않습니다. 왜 어떤 생각을 바꿔야합니까? 감사.javascript 콜백 매개 변수가 정의되지 않았습니다.

자바 스크립트 코드 ----

element = { 
    border: { 
     width:0 
    }, 

    SetBorderWidth : function(newWidth){ 
     this.border.width = newWidth; 
    } 
}; 

elementChild = function(){ 
    padding: 0 
}; 

elementChild.prototype = element; 


var e = new elementChild(); 

var callback = e.SetBorderWidth; 

function SetWidth(){ 
    e.SetBorderWidth(10); 
    alert(e.border.width); 

    callback.call(10); 
    alert(e.border.width); 
} 

<input type="button" onclick="SetWidth();" value="Click" /> 

답변

2

그냥 callback(10)을 HTML 코드; .call을 추가하면 인수 대신 문맥 (this 변수)으로 10이 전달됩니다.

+0

누락 된 컨텍스트에 동의하지만 'this'여야합니다. 'SetWidth' 함수 안에서 무엇이 실행 컨텍스트로 전달되어야 하는지를 말하는 것은 정말로 어렵습니다. –

+0

컨텍스트가'this'보다'e' ​​여야한다고 생각합니다. –

+0

콜백으로 변경 한 다음 this.border.width = newWidth를 e.border.width = newWidth로 변경했습니다. 그게 효과가 있었지만 이것은 내가 바라는 바가 아니 었습니다. 이 개체의 인스턴스에 대한 변수 이름을 알 필요가 없어졌습니다. 이것을 할 또 다른 방법이 있습니까? 감사. –

관련 문제