Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用';这';类中的嵌套函数_Javascript - Fatal编程技术网

Javascript 使用';这';类中的嵌套函数

Javascript 使用';这';类中的嵌套函数,javascript,Javascript,可能重复: 由于在嵌套类函数调用中使用“this”时出现问题,因此我目前在按需要设计JS类时遇到问题。我不知道如何更好地描述它,所以这里有一个我的意思示例 test.html <!DOCTYPE html> <html class="main" lang="en"> <head> <meta charset="utf-8"> <script type="text/javascript" src="test.js">&l

可能重复:

由于在嵌套类函数调用中使用“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>
当然,这只是一个简单的例子来说明我的意思。 那么,如何在setTimeout调用中的函数中使用“this”标识符,或者如何更好/正确地实现这一点

非常感谢您的帮助!
Cheers

的值保存在变量(
self
)中,然后您可以在
设置超时
内访问它

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

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

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

这个问题似乎每天都会被问十几次。重要的是要知道,
这个
已经设置好了(或者如果愿意的话可以“重置”)在每次函数调用中。很抱歉问这样一个常见的问题,但我在发布之前诚实地搜索了一个答案,但找到正确答案的问题是,所有关键字都非常通用:-/这个问题似乎每天都会被问十几次。重要的是要知道
这个
已设置(或“重置”,如果愿意的话)在每次函数调用中。很抱歉问了这么一个常见的问题,但我在发布之前诚实地搜索了答案,但找到正确答案的问题是所有关键字都非常通用:-/不过,我建议使用比
self
更具描述性的词。也许
testClass
会有用。@ScottSauyet:Hi,这只是许多库使用的约定,例如
jQuery
,将
self
命名为实例的缓存引用。明白。我不同意这个惯例。如果您嵌套另一个级别,
self2
,您会怎么做?!使用一个更具描述性的名字是非常有用的。非常感谢你的回答@ScottSauyet:我理解你的观点,但我不希望有多个嵌套级别;这可能会让人很困惑。不过,我建议做一些比自我描述更具描述性的事情。也许
testClass
会有用。@ScottSauyet:Hi,这只是许多库使用的约定,例如
jQuery
,将
self
命名为实例的缓存引用。明白。我不同意这个惯例。如果您嵌套另一个级别,
self2
,您会怎么做?!使用一个更具描述性的名字是非常有用的。非常感谢你的回答@ScottSauyet:我理解你的观点,但我不希望有多个嵌套级别;这可能会让人很困惑。