以下のような場合にtest1.sampleは関数オブジェクトしか渡せないため、
undefinedとなる。そこで、オブジェクトと括り付けるために
bind(括り付けたいオブジェクト名)を利用する。
var class1 = function(x){
this.x = x;
this.sample =function() {
alert(this.x);
};
};
function test() {
var test1 = new class1("test1");
setTimeout(test1.sample,0); //<-undefinedと表示される
setTimeout(test1.sample.bind(test1),0); //<-test1と表示される
}
尚、オブジェクトと括り付けた関数を即座に実行する場合は、
callやapplyを利用する。
引数固定の場合はcall(),可変引数の場合はapply()を使用する。
具体的には、関数名.apply(オブジェクト等)と記載することで
引数のオブジェクトをthisとした関数実行ができる。
最終更新:2014年07月20日 11:46