2017-07-04 4 views
0
const person = { 
    name: "Mike", 
    country: "New Zealand" 
} 

function personUpdate(name, country) { 
    this.name = name 
    this.country = country 
} 

personUpdate.bind(person) 

personUpdate('Tony', 'Chile') 

なぜこれは機能しませんか? personにはまだ 'Mike'と 'New Zealand'というオリジナルのプロパティがあります。どうしてですかpersonUpdate.bind(person)personUpdateへのすべての呼び出しでthispersonオブジェクトを参照するようにします(newを使用しないで)。オブジェクトへのJavacriptバインディング機能

+1

var boundPersonUpdate = personUpdate.bind(person); boundPersonUpdate( 'Tony'、 'C​​hile'); – kangsu

答えて

2

.bindを呼び出すと、渡す機能は変更されません。新しい束縛関数を返します。

だから、あなたはどちらか希望:

var boundPersonUpdate = personUpdate.bind(person); 
boundPersonUpdate(...); // call the bound version 

か:

personUpdate = personUpdate.bind(person); // overwrite the original function 
0

を私はあなたのコードを試してみましたし、私は何もそれと間違っているんだと思います。

私はそれを印刷しようとしましたが、それは私に "トニー"と "チリ"を与えています、または私はあなたの質問を誤解しましたか?

関連する問題