当前位置: 首页 > 面试题库 >

'var that = this;'是什么?在JavaScript中意味着什么?

赵明亮
2023-03-14
问题内容

在一个JavaScript文件中,我看到了:

function Somefunction(){
   var that = this; 
   ... 
}

声明that并分配this给它的目的是什么?


问题答案:

我将以一个插图开始这个答案:

var colours = ['red', 'green', 'blue'];
document.getElementById('element').addEventListener('click', function() {
    // this is a reference to the element clicked on

    var that = this;

    colours.forEach(function() {
        // this is undefined
        // that is a reference to the element clicked on
    });
});

我的回答最初是用jQuery演示的,只是略有不同:

$('#element').click(function(){
    // this is a reference to the element clicked on

    var that = this;

    $('.elements').each(function(){
        // this is a reference to the current element in the loop
        // that is still a reference to the element clicked on
    });
});

由于this在通过调用新函数更改范围时会经常更改,因此无法使用原始值访问原始值。将其别名为that可以使您仍然访问的原始值this

就个人而言,我不喜欢使用thatas作为别名。它指的是什么几乎是不明显的,特别是如果函数长于几行。我 总是
使用更具描述性的别名。在上面的示例中,我可能会使用clickedEl



 类似资料:
  • 我想创建一个

  • 问题内容: 我从未见过这样的代码: 一样吗? 编辑 如果该类是继承的,它指向哪个类? 问题答案: 指向其编写所在的类。 因此,如果您的getInstance方法位于类名中,则以下行: 将做与: 编辑:评论后,还有更多信息。 如果您有两个相互扩展的类,则有两种情况: 在子类中定义 在父类中定义 第一种情况看起来像这样(在此示例中,我已经删除了所有不必要的代码-您必须将其重新添加来获得单例行为)*:

  • 问题内容: 我看到了这个功能: 这是什么?有功能吗?为什么要放置函数定义? 问题答案: 在javascript中,您可以拥有和函数。 与…相同 你称这些为 您可以定义函数并立即将其调用为 的 part定义一个函数,并在其后立即调用刚刚定义的函数,并以10和20作为参数。 由于该函数没有名称,因此无法在以后的代码中使用。 您问题中的代码可能被 缩小了 ,并以类似的方式创建了一个函数并立即调用它。

  • 问题内容: 下面是代码片段。 有人可以向我解释@符号在Java中的含义吗? 问题答案: 这是一个注释。 注释是元数据的一种形式。它们提供的程序数据不属于程序本身。注释对其注释的代码的操作没有直接影响。 注释确实会影响工具和库对待程序的方式,进而会影响正在运行的程序的语义。可以从源文件,类文件中读取注释,也可以在运行时从中读取注释。

  • 问题内容: 异步在Ajax中意味着什么?以及Ajax如何知道何时在不进行服务器轮询的情况下提取数据? 问题答案: 异步意味着脚本将向服务器发送请求,并继续执行它而无需等待答复。收到答复后,立即触发浏览器事件,该事件进而允许脚本执行关联的操作。 Ajax知道何时从服务器提取数据,因为您告诉它何时进行处理。

  • 问题内容: 我对gulp比较陌生,我想知道gulp任务到底是做什么的?我已经搜集到它通常在a 和after之后运行,但是它还必须更多。我一直无法在网上或gulp的文档中找到任何东西,我真的很想了解我在使用什么。 编辑我发现了这个,但是在解释它方面做得很差 问题答案: 从Node文档中: https://nodejs.org/api/stream.html#stream_visible_pipe_d