2017-07-16 12 views
1

なぜそれが、これは動作することであるwindow.location.reloadをファーストクラスの関数として渡せないのはなぜですか?

setTimeout(function() { window.location.reload() }, 3000); 

が、これはそうではありませんか?理論的にはTypeError: 'reload' called on an object that does not implement interface Location.

+4

実行コンテキスト:

ソリューションは、コンテキストをバインドすることです。これは任意のメンバ関数に当てはまります。実行コンテキスト 'setTimeout(window.location.reload、bind(window.location)、3000);をバインドする必要があります。それはそれを行うべきです –

+3

@DayanMorenoLeon最初のカンマはドットでなければなりません。 – Yogu

+0

はい、あなたは正しいです、タイプミス –

答えて

1

はそれができる:

setTimeout(window.location.reload, 3000); 

は、私は、次のエラーメッセージが表示されます。そのように渡すと、その実行コンテキスト(this)のない単なる関数に過ぎません。機能は(内部で)thisを使用しているため、失敗します。これはconsole.logでも同様です。

setTimeout(window.location.reload.bind(window.location), 3000); 
関連する問題