2016-07-28 68 views
0
function greet(){ 
    return 'Hi ' + this.name; 
} 
greet = greet.bind({name: 'Tom'}); 
greet(); // Hi Tom 
greet = greet.bind({name: 'Harry'}); 
greet(); // Hi Tom (Why??) 

'bind'应该返回一个新的函数,其中包含'this'的新值。为什么这不起作用?如何使用'绑定'更改函数的上下文?

+1

简短的答案是,被束缚,无法_rebound_ –

+0

功能得到它,谢谢! –

回答

1

一旦函数绑定到自定义对象,它就不能被更改。这是你可以做什么在原有功能不变:

function greet(){ 
    return 'Hi ' + this.name; 
} 
greet1 = greet.bind({name: 'Tom'}); 
greet1(); // Hi Tom 
greet1 = greet.bind({name: 'Harry'}); 
greet1(); // Hi Harry 
相关问题