2017-09-11 1 views
1

코드가 아래 있습니다. 결과가 "Hello Mr. John Doe"입니다.전화 응답 기능이 작동하지 않습니다.

function formatname(name) { 
    return name.fullName; 
}; 

const name = { 
    firstName: 'John', 
    lastName: 'Doe', 
    fullName: function() { 
     return this.firstName + ' ' + this.lastName; 
    } 
}; 

const getName = (
    <h1>Hello Mr. {formatname(name)}</h1> 
); 

ReactDOM.render(
    getName, 
    document.getElementById('root') 
); 

하지만 저장하면 "Hello Mr."입니다. 변수 fullName에 잘못되었습니다. 코드에서

답변

3

은 :

const name = { 
    firstName: 'John', 
    lastName: 'Doe', 
    fullName: function() { 
     return this.firstName + ' ' + this.lastName; 
    } 
}; 

이 더 이상 당신의 변수 이름에 대해 참조되지 않습니다.

formatname(name).bind(name)() 

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind

바인드() 메소드 호출시에, 그 이를 가진 새 함수를 만듭니다 : 해결하기 위해, 당신은 당신이 선언 된 이름이 다시 바인드해야 키워드가 제공된 값으로 설정되고 새 함수가 호출 될 때 지정된 시퀀스 앞에 인수가옵니다.

+0

감사합니다. 전화 해 주실 수 있습니까? "블라인드 (이름)() 무엇을 의미합니까? – HungNguyen

+0

Refer : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind bind() 메서드는 호출 될 때 this 키워드가 제공된 값으로 설정된 새 함수를 만듭니다. 새 함수가 호출 될 때 주어진 인수 시퀀스가 ​​제공된 것보다 우선합니다. –

관련 문제