JavaScript: 関数の追跡
- 2007-05-19
- カテゴリ: Client Side
- タグ: JavaScript トラックバック 安易な発想
IT戦記: JavaScript の関数を「引数そのまま返す化」
404 Blog Not Found: 関数をtraceする
この二つのブログには本当にお世話になっているんだが、相変わらずすごい。っていうか、よくこんなおもしろいことを思いつくなあ。
引数そのまま返す化
IT戦記
alertだけ
function hoge() { // ...略... var result = fuga(); alert(result); return result; }alert + そのまま返す化
function hoge() { // ...略... return alert.s(fuga()); }
確かにすげぇ便利だ。
でも、loggingに目的を限定してしまえば↓だけでもよさそうな気がしないでもない。
function log(t) {
alert(t);
return t;
}
function hoge() {
//...略...
return log(fuga());
}
log()の実装しだいで色々な動きが実現できるし、書くコードの量減るし。
まぁ、こう書いちゃうとすごく普通のloggingになっちゃう。引数そのまま返す化のいいところは、処理の流れに影響を与えないままに、好きな処理を埋め込めるってことなのにね。
関数trace
404 Blog Not Found
function add(x,y){ return x + y }
add = add.trace('add');
add(1,1);
↑のコードで、alert('add(1, 1) = 2');がついでに呼び出されるんですよね。これもまたすごい。
ただ、Function.prototype.traceの中の10行目で、
retval = self.apply(null, arguments);
と、やってしまっているので、オブジェクトのメソッドをtraceしようとするとうまくいきません。
var obj = {
field: 'Hello!',
method: function() {
return this.field;
}
}
obj.method = obj.method.trace('method');
obj.method(); /* method() = undefined */
何とかなりませんかね?trace()に結構たくさん引数を渡したりしてあげないといけなさそうで大変そうです。
トラックバックURL
- http://liosk.blog103.fc2.com/tb.php/8-465710e7
1 件のトラックバック
- javascript - 関数をtraceする
-
amachangのコメントを受けて追記JavaScript: 関数の追跡 - 文系大学的IT系の悲哀からのTBを受けて追記書き換えめんどいー。IT戦記 - JavaScript の関数を「引数そのまま返す化」alertだけalert(hoge);hoge.method();改行めんどいー。alert + そのまま....
- 2007-05-19
- 発信元: 404 Blog Not Found
3 件のコメント
-
trace関数の方では
trace("method", obj)
でうまく行くと思うのですが。
prototype版の方も、
obj.method = obj.method.trace();
でOKのはず。- 2007-05-19
- by 弾
- id:-
-
あああ、勘違いしてました。記事の方を直しました。TBありがとうございました。
Dan the Man to Err- 2007-05-19
- by 弾
- id:-
-
nullをthisにするだけで治ってますね。すごいです。もう少し勉強したいと思います。
- 2007-05-20
- by Lios K
- id:-

