2013-11-20 2 views
0

사용자 지정 기능을 추가하기 위해 데이터베이스 API에 대한 작은 래퍼를 작성하고 있습니다.JavaScript의 전달 기능은 무엇입니까?

core.db.view = bucket.view; 

기능이 작동하는 것 같다하지만 HTTP 오류가있다 :

난 그냥 그대로 받아 수정하지하려는 view 기능은, 그래서 기능을 할당했습니다. 함수를 래핑하면 모든 것이 잘 작동하지만 함수를 할당하는 것을 선호합니다.

core.db.view = function (a, b, c) { 
    return bucket.view(a, b, c); 
}; 

아이디어가 있으십니까?

+3

은 아마 당신은'core.db.view = bucket.view.bind (버킷)을 할 필요가;'? –

+1

'bind'에 대한 MDN의 기사를 참조하십시오 : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind. – apsillers

답변

2

자바 스크립트

에서
obj.method(); 

var m = obj.method; m(); 

는 다른 것입니다. 더 구체적으로 무엇입니까 this 메서드의 본문 실행 중에 두 가지 경우에 다릅니다 : 첫 번째 경우 thisobj, 은 글로벌 개체가 될 것입니다.

해결책은 폐쇄에서 메서드 호출을 포장한다 :

var m = function(){return obj.method()}; 
+0

그것은 그가 이미 가지고있는 해결책입니다. 그는 새로운 기능으로 포장하지 않는 해결책을 찾고있었습니다. –

+0

텍스트에서 나에게/그가 이해하지 못했던 것 같다 ** 그냥 ** 기능을 할당 단지 작동하지 않았다. 또한'bind'는 기본적으로 함수를 감싸는 것입니다 (컨텍스트를 설정 한 후 호출을 전달하는 새로운 개별 객체를 반환합니다). – 6502

관련 문제