2017-03-24 5 views
0

JavaScript 패턴 중 하나를 통해 연결됩니다.부모 함수를 반환하는 내부 함수, 어떻게?

가 여기에 내가 코드의 마지막 줄에서이

function thisFunc(fullName){ 
    var that = this; 
    this.firstName = function(name){ 
     fullName = fullName + name; 
     return this; 
    }; 

    this.lastName = function(name){ 
     fullName = fullName + ' ' + name; 
     return that; 
    }; 

    this.show = function(callback){ 
     callback(fullName); 
     return that; 
    }; 
} 

var x = new thisFunc(''); 
x.firstName('Karthikeyan').lastName('Sundararajan').show(function(result){ 
    console.log(result); 
}); 

var y = new thisFunc(''); 
console.log(y.firstName('Karthik')); 

같은 기능 firstName을의 반환 값을 인쇄하고있다,이 같은 결과를 얻었다.

thisFunc {firstName을 : [기능],이 lastName : [기능] 쇼 : [기능]} 인 firstName의 부모

을가 thisFunc을 반환하는 이유는, 나는 그것이 firstName을 반환합니다 예상 . 그리고 내가 '돌아와'하고 '돌려 보내라.'라고 말할 때 나는 똑같은 결과를보고있다.

+0

firstName 함수는 'that'을 반환하므로 객체 'y'가 반환됩니다. 결과는 좋습니다. 당신의 기능은 사슬로 매회 만들어 져서 매번 당신의 물건을 돌려줍니다. fullnamme에 다음과 같은 함수를 추가하려면 this.getFullName = function() {return fullName; }; 또는 show 함수를 사용하여 콜백에서 fullName을 가져옵니다. – PortePoisse

답변

2

firstName()의 반환이 실제 상위 기능이기 때문에. 당신이 다음을 호출하지 않는 firstName 기능을 반환하려면, 그냥 내가 제대로 질문을 이해 바랍니다

console.log(y.firstName); 

을한다.