js apply

try{
  var args = [/\w/, "."];
  "*_*".replace.apply(this, args);
} catch(e) {
  console.log(e)
}

これを実行すると例外が出て

[.bject Window]

が出力される。なんだこれ。callでも同じ。
nativeの関数ってapplyで呼べないの?

追記

malaさんにコメントいただいたとおりapplyするとreplaceがthisに対して呼ばれてこういう結果に。そして例外が出るというのは勘違いでした。

  var args = [/\w/, "."];
  "".replace.apply("*_*", args);

だと期待通り

*.*

になりました。難しい!