IE8やその他の非ES5ブラウザーをサポートするために、ES5シムではなくunderscore.jsを(悲しいことに)使用する既存のプロジェクトがあります。私はES5に慣れていますが、通常はアンダースコアを使用しません。_.bindのアンダースコアのドキュメントを読み、それを機能させようとしました。
ネイティブES5を使用した実際の例を次に示します。
// Greets people
HelloThing = function (greeting) {
this.greeting = greeting;
this.waitAndSayHello = function() {
setTimeout(function() {
console.log(this.greeting)
}.bind(this), 500);
}
}
var pretend_thing = new HelloThing('hello world');
pretend_thing.waitAndSayHello();
ドキュメントの理解から、アンダースコアを使用した失敗した試みは次のとおりです。
// Greets people
HelloThing = function (greeting) {
this.greeting = greeting;
this.waitAndSayHello = function() {
var greet = function() {
alert(this.greeting)
}
_.bind(greet, this)
setTimeout(greet, 500);
}
}
var pretend_thing = new HelloThing('hello world');
pretend_thing.waitAndSayHello();
アンダースコアを機能させるにはどうすればよいですか?