可能重复:
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'标识符,或者如何更好/正确的方法来实现呢?
非常感谢您的帮助! 干杯
答案 0 :(得分:5)
将this
的值保存在变量(self
)中,然后您可以在setTimeout
内访问它。
function TestClass() {
this.alertValue('This works');
var self = this;
setTimeout(function() {
self.alertValue('This does not work!')
}, 1000);
}