2017-09-11 75 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()方法创建一个新函数,该函数在调用时将其关键字设置为提供的值,并在调用新函数时提供的任何参数序列之前提供给定序列的参数。 –