2016-07-28 69 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 
相關問題