在类中的嵌套函数中使用'this'

时间:2012-08-22 11:23:09

标签: javascript

  

可能重复:
  Nested function parameters and 'this' context in Javascript

由于在嵌套类函数调用中使用'this'的问题,我目前在设计我的JS类时遇到问题。不知道如何更好地描述它,所以这是一个我的意思的样本。

的test.html

<!DOCTYPE html>
<html class="main" lang="en">
<head>
    <meta charset="utf-8">
    <script type="text/javascript" src="test.js"></script>
    <script type="text/javascript">
        function doIt() {
            var myTestClass = new TestClass();
        }
    </script>
</head>
<body>
    <button onclick="doIt();">Do it!</button>
</body>
</html>

test.js

function TestClass() {
   // this is working
   this.alertValue('This works');

   // this is not working
   setTimeout(function(){this.alertValue('This does not work!')}, 1000);
}

TestClass.prototype.alertValue = function(value) {
   alert('Value is: ' + value);
}

当然,这只是一个简化的例子来说明我的意思。 那么我如何在setTimeout调用中的函数内使用'this'标识符,或者如何更好/正确的方法来实现呢?

非常感谢您的帮助! 干杯

1 个答案:

答案 0 :(得分:5)

this的值保存在变量(self)中,然后您可以在setTimeout内访问它。

function TestClass() {
   this.alertValue('This works');
   var self = this;
   setTimeout(function() { 
     self.alertValue('This does not work!')
   }, 1000);
}