2017-09-11 105 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') 
); 

但是,當我保存它返回的是「你好先生」,我在變量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

的bind()方法創建一個新的函數,調用它時,有其 這關鍵字設置爲所提供的值,並且在調用新函數時提供的任何前面提供的參數序列爲 。

+0

謝謝,它工作。你可以給我打電話「.blind(name)()是什麼意思? – HungNguyen

+0

請參閱:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind The bind()方法創建一個新函數,該函數在調用時將其關鍵字設置爲提供的值,並在調用新函數時提供的任何參數序列之前提供給定序列的參數。 –