JavaScriptのproxyでハマったこと

はじめに


JavaScriptを書いてる訳ですが・・・
久しぶりに書いて、初歩的なことでアレ?ってなったので備忘録的にメモしておきます

thisを自由に変更できるproxy関数を使う


大体、以下のような感じで、関数とコンテキスト(thisに設定するオブジェクト)を指定するわけです。

ですが、以下2つのコードで嵌まりました。

1
2
3
4
5
6
var obj = {
    doSomething : function() {
        alert('test');
    }
};
$('button#hoge').click($.proxy(obj.doSomething(), obj)); 
1
2
3
4
5
6
var obj = {
    doSomething : function() {
        alert('test');
    }
};
$('button#hoge').click($.proxy(obj.doSomething, obj)); 

一見、違いがなさそうなのですが・・・
実は、実行タイミングに違いがあります 。
一番、上の例だとイベント登録時に実行してしまいますが、
下のものはイベント実行時に正しく実行してくれます。

こんな、しょうもないことで詰まりましたw

即時関数


グローバルに変数割り当てなくてお得な感じ
あと、アレですね使い捨てできる(ぉぃ

1
2
3
(function() {
  alert('test');
})();