chromeでデバッグしてるとき、console.logだと長いんで
var log = console.log;
ってしてたんだけど、「Uncaught TypeError: Illegal invocation」って出て動かないんで、仕方ないので
var log = function (str) { console.log(str) };
こんな感じにして使ってた。
で、やり方まずくてできないのかなと思ってぐぐってみたら、やはりできないっぽい。
同じようなやり方だけどもっとスタイリッシュにやってるひとがいた。
Jxck's OutPut - console.log は長いので
ということで
function log(){ console.log.apply(console, arguments) };
厳密にはfunction log(){ console.log.apply(console, Array.prototype.slice.call(arguments)) };
これでlog(1, 2, 3);// 1, 2, 3
なるほど、argumentsってすると引数が取れるのか。すごい勉強になる。
気になったのがapplyで、なにするものかまったくわからないのでぐぐった。
いろいろ説明されてるサイトあったけど、なんだかんだでここがいちばんわかりやすかった。
[Javascript]callメソッドとapplyメソッドの基本的な動作 « Codaholic
callとapplyってのがあって、ざっくりいうとthisをcallとapplyの引数で渡したobjectにしてくれるっぽい。
なるほどすごいとは思うけど、正直どういうときに使ったらいいのかよくわからない...
というわけで最終的には同じことだけどなんとなくこうした。
var log = function () { console.log.apply(console, arguments) };
勉強になる。