상황은 이렇습니다 : 객체 + 프로토 타입에 정의한 모든 함수에 단일 duktape/C 함수를 사용하고 싶습니다. 이를 위해 나는 함수 이름과 콜백 (실제로는 std::function
)을 사용하는 함수 맵을 가지고 있으며, 그렇게 쉽게 일반적인 처리를 할 수 있고 콜백을 간단하게 할 수있다. (심지어 랭다를 사용할 수도있다.)duktape 용 중앙 기능 디스패처를 작성하는 방법은 무엇입니까?
이미 하나의 문제, 즉 다른 객체에 동일한 이름의 함수가있어 잘 작동합니다. 모호성을 제거하기 위해 이제 객체의 힙 포인터 (또는 객체 인 프로토 타입)를 추가 한정자로 사용합니다. 따라서 내 중앙 딱지/C 함수를 호출 할 때 함수가 전역 (즉 전역 개체에 정의되어 있는지) 여부를 먼저 확인합니다. 그게 실패하면 this
바인딩을 얻고 힙 포인터로 룩업을 수행합니다. 또한 실패 할 경우 프로토 타입 체인을 걷고 프로토 타입 중 하나에서 함수를 찾을 수 있는지 확인합니다.
이것은 this
바인딩이없는 경우 (또는 Function.prototype.apply()
과 같은 잘못된 경우)를 제외하고는 99 %까지 잘 작동합니다.
내 질문에 대한 : 내 중앙 duktape/C 콜백 함수에 대한 원래 프로토 타입을 어떻게 얻을 수 있습니까?