Javascriptのfunctionに意味不明なプロパティをつける

Javascriptの関数はオブジェクトである。オブジェクトとはキーに対し値を持つ連想配列的なものだ。そのため、以下は有効なJavascriptである。

var tmp = function () {
    alert("ding");
};
tmp.str = "dong";

tmp();
// ding

alert(tmp.str);
// dong

//クロージャを使わずに値をキャッシュする
tmp2 = function () {
    tmp2.str = tmp2.str || "";
    tmp2.str += "unko! ";
    alert(tmp2.str);
    return this;
};

tmp2();
// unko!
tmp2();
// unko! unko!
tmp2().tmp2();
// unko! unko! unko!
// unko! unko! unko! unko!