-- JAVA中关于this和that
 this 的坑,出现问题的本质就是 this 指针的指向和自己想的不一样。
 this 与上下文中可执行代码的类型有直接关系,this 的值在进入执行上下文时确定,并且在执行上下文运行期间永久不变。

揭开 this & that 之迷 - http://www.sohu.com/a/158143999_505825
 this 到底取何值?this 的取值是动态的,是在函数真正被调用执行的时候确定的,函数定义的时候确定不了。因为 this 的取值是执行上下文环境的一部分,每次调用函数,都会产生一个新的执行上下文环境。 this 的作用就是用来指明执行上下文是在哪个上下文中被触发的对象。
 既然 this 是执行上下文确定的,那么从执行上下文的种类进行分类,可以分为3种:那么接下来我们就从 Global ExecuTIon Context 全局执行上下文,FuncTIon ExecuTIon Context 函数执行上下文,Eval Execution Context Eval执行上下文 这三类

-- JS 的this和that
 this指的是当前的对象。 that是一个临时的变量,用于保存当前对象的this状态。(that可以随便取名)。
Page({
  data: {
  },
  onLoad:function(){
    var that = this;
    this.a = 1;
    console.log(this.a)
    setTimeout(function () {
      console.log(this.a)
      console.log(that.a)
    }, 1000)
  }
})
原理说明:(有3个log,我简称log1,log2,log3)
log1打印1,这里this指的是onLoad函数对象的a的值.
log2打印结果是undefined , 这里this指的是setTimeout里面的匿名函数对象,它是没有a的。
log3打印出1,这里that代表的是onLoad函数对象的a的值。

$('#conten').click(function(){
      //this是被点击的#conten
      var that =this;
      $('.conten').each(function(){
          //this是.conten循环中当前的对象
          //that仍是刚才被点击我的#conten
      })
  })

在javascript中,this代表的是当前对象。 var that=this就是将当前的this对象复制一份到that变量中。
$(‘#zhetenga’).click(function(){ 
  // this是被点击的#zhetenga 
  var that = this;
  $(‘.zhetenga’).each(function(){
     // this是.zhetenga循环中当前的对象 
     // that仍然是刚才被点击的#zhetenga 
  }); 
}); 
可以看到,this对象在程序中随时会改变,而var that=this之后,that没改变之前仍然是指向当时的this,这样就不会出现找不到原来的对象。

JAVA / JS 中关于this和that相关推荐

  1. java js中 function函数报错_浅析JS中对函数function的理解(基础篇)

    正文:我们知道,在js中,函数实际上是一个对象,每个函数都是Function类型的实例,并且都与其他引用类型一样具有属性和方法.因此,函数名实际上是指向函数对象的指针,不与某个函数绑定.在常见的两种定 ...

  2. java/js中语音提醒功能的实现

    我们在java开发中,经常遇到实现语音提示的功能.目前市场上有许多成熟的语音提示的产品,并提供接口供用户使用.所以我们没有必要费心去书写功能代码,只需要调用接口即可.需要注意的是,很多接口的每天都会有 ...

  3. test函数java,js中test()函数在正则中使用

    test() 方法用于检测一个字符串是否匹配某个模式. 返回一个 Boolean 值,它指出在被查找的字符串中是否匹配给出的正则表达式.regexp.test(str) 参数 regexp必选项.包含 ...

  4. return true Java_[Java教程]js中return,return true,return false的用法及区别

    [Java教程]js中return,return true,return false的用法及区别 0 2015-11-16 23:00:03 1.语法及返回方式 ①返回控制与函数结果 语法为:retu ...

  5. java使用htmlunit工具抓取js中加载的数据

    htmlunit 是一款开源的java 页面分析工具,读取页面后,可以有效的使用htmlunit分析页面上的内容.项目可以模拟浏览器运行,被誉为java浏览器的开源实现.这个没有界面的浏览器,运行速度 ...

  6. react性能优化方案_React灵敏且性能卓越的Spray + Akka解决方案,以“在Java和Node.js中发挥并发性和性能”...

    react性能优化方案 在我以前的文章中,我研究了一个虚拟的交易引擎,并将基于Java的阻止解决方案与基于Node.js的非阻止解决方案进行了比较. 在文章的结尾,我写道: 我怀疑随着Node.js的 ...

  7. 反应灵敏且性能卓越的Spray + Akka解决方案,以“在Java和Node.js中发挥并发性和性能”...

    在我以前的文章中,我研究了一个虚拟的交易引擎,并将基于Java的阻止解决方案与基于Node.js的非阻止解决方案进行了比较. 在文章的结尾,我写道: 我怀疑在Node.js近期取得成功之后,越来越多的 ...

  8. js encodeurl java接收_在JS中encodeURI(url)怎样才能不出现乱码?

    这次给大家带来在JS中encodeURI(url)怎样才能不出现乱码?,在JS中使用encodeURI(url)的注意事项有哪些,下面就是实战案例,一起来看一下. 一般情况下, 发送 encodeUR ...

  9. [前台]---js中方法的强制返回和java中方法的强制返回

    java写惯了,偶尔写个js,真是各种坑,比如方法中的return的效果就不一样: java中: public static void main(String[] args) {String[] a ...

  10. js中的if与Java中的if_JS直接if参数的用法JS中!和!!区别

    经常在JS中见一些代码直接if(参数),然后参数调用的时候是将元素自己传下去.例如下面代码: functiontest1(obj){if(obj){ alert($(obj).val()); }els ...

最新文章

  1. 力扣(LeetCode)刷题,简单+中等题(第33期)
  2. dropbear编译安装及服务脚本编写
  3. Impress.js教程
  4. python import出错_python import的一些问题
  5. Hyper-V 和Ubuntu Server 16.04 配置静态IP
  6. js最简单数组去重_js简单数组去重
  7. NPM useful library path: request.js
  8. BZOJ2038 : [2009国家集训队]小Z的袜子(hose)(莫队算法)
  9. 虚拟机Ubuntu18.04 root下 连接 windows 中 winScp
  10. 配置Apache虚拟机
  11. 艾特肯法方程解matlab程序,牛顿迭代法matlab代码
  12. iOS App 上架流程-新版本1.0上架
  13. 将字符串转换成System.Drawing.Color类型
  14. 学习笔记(2)centos7 下安装mysql
  15. 2016.8.27一套简单的题解题报告
  16. javaSocket编程TCP
  17. 微机大作业—— 24秒倒计时器
  18. 怎么启用对远程服务器的访问,未启用对服务器的远程访问怎么办
  19. android改变系统语言,Android 9.0设置系统语言
  20. 多媒体计算机设计原则,多媒体课件的设计原则

热门文章

  1. Qt6 tesseract-ocr 截图识字
  2. node短信接口开发
  3. c语言引用win api,C调用WinAPI及窗口过程
  4. softmax函数反向传播
  5. mysql分页查询如何优化_mysql分页查询优化
  6. 史上最全最强SpringMVC详细示例 实战
  7. pythonobject转int_python – Pandas:将dtype’object’转换为int
  8. Toshiba e-STUDIO5616AC 一体机驱动
  9. Chrome 扩展程序 CrxMouse 优化版 v3.0.1
  10. 怎样控制小程序tabbar图标大小_微信小程序tabBar的基本设置-微信小程序tabbar字体大小-微信小程序tabbar高度...