문제

아래 코드는 특정 상황에서 실행하는 몇 가지 방법에 유의하여 더 간단한 구문을 사용하여 호출 할 수 있습니다.

var callbacks = {alter: SPZ.sequenceEditor.saveAndLoadPuzzle,
                 copy: SPZ.sequenceEditor.saveAsCopyAndLoadPuzzle,
           justSave:SPZ.sequenceEditor.saveAndLoadPuzzle};

그러나 코드는 빈 객체를 계속 반환합니다. Console.log에서 메소드가 정의되어 있는지 확인했습니다. 또한 이름을 변경하고 빈 객체를 호출 한 다음 콜백 (Alter)과 같은 속성을 추가하고 중요하지 않은 다른 변경 사항을 시도했습니다.

왜 이것이 효과가 없습니까?

데모

오류는 puzzle.js의 238 행에 있습니다

도움이 되었습니까?

해결책

정확히 문제는 무엇입니까? 속성이 될 것입니다 undefined 아니면 통화가 올바르게 작동하지 않습니까?

후자의 경우 문제는 메소드를 호출 할 때 this 더 이상 언급되지 않습니다 SPZ.sequenceEditor, 그러나 당신의 callbacks 물체; 이 문제를 해결하려면 도우미 기능을 사용하십시오 bind() (여러 프레임 워크에 의해 정의 된대로) 또는 전화를 직접 랩핑하십시오.

var callbacks = {
    alter: function() {
        return SPZ.sequenceEditor.saveAndLoadPuzzle.apply(
            SPZ.sequenceEditor, arguments);
    },
    copy: function() {
        return SPZ.sequenceEditor.saveAsCopyAndLoadPuzzle.apply(
            SPZ.sequenceEditor, arguments);
    },
    justSave: function() {
        return SPZ.sequenceEditor.saveAndLoadPuzzle.apply(
            SPZ.sequenceEditor, arguments);
    }
};

그만큼 apply() 방법이 인수를받는 경우에만 필요합니다. 세부 사항을 참조하십시오 MDC.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top