setTimeout无法绑定到“this”原型函数

时间:2015-08-12 04:06:27

标签: javascript

我写了一段代码,我希望每秒都能看到Pattern pattern = Pattern.compile(".*?¥(\\d*.\\d*)", Pattern.DOTALL); ,但我有"Hello, world!",我找不到我的错误。

undefined

1 个答案:

答案 0 :(得分:7)

因为执行setTimeout回调时,默认情况下会以窗口作为其上下文(函数中由thisthis引用的对象)执行。

您可以使用Function.bind()

将自定义上下文传递给回调



function Greeting(message, delay) {
  this.message = message;
  setInterval(this.blowUp.bind(this), delay * 1000); //use setInterval since you want to repeat the callback execution
}

Greeting.prototype.blowUp = function() {
  snippet.log(this.message);
};

new Greeting("Hello, world!", 1);

<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
&#13;
&#13;
&#13;

注意:如果要重复执行回调,则必须使用setInterval而不是setTimeout()