call()とapply()

 function func(v) {
   alert(v + this.name);
 }
 func('hello, ');

↑ではthis.nameが参照出来ないが、

 var func = function (v) {alert(v + this.name);};
 func.call({name:'taro'}, 'hello. ');

↑のようにcall()を使うと任意のオブジェクト({name:'taro'})に対して関数(func())を実行できる。この際、オブジェクトには何の変更もない。これを別の方法で実装すると、

 var obj = {name:'taro'};
 obj.func = function () {alert(v + this.name);};
 obj.func('hello. ');
 delete obj.func;

となる。


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS