断断续续学历nodejs也有半年时间了,对于Javascript也是慢慢了解中。

最近看道爷的Javascript Good Parts中,里面有提到函数调用模式的时候,出现了var that =

this这种用法,加上以前自己遇到的情况,便自己做一个总结。

当一个函数被保存为对象的一个属性的时候,我们称之为一个方法。当一个方法被调用的时候,this被绑定到这个对象。

对于这句话我们较容易理解,

var value = 1;

var myObject = {

value: 0,

get: function(){

console.log(this.value);

}

};

myObject.get();

上面输出的结果是

0,这是因为get(相当与this.get)是作为myObject的一个属性,故调用get的时候,this便是绑定在myObject上;而不是全局的this上,否则输出的便是1.

当一个函数并非一个对象的属性时,它是被当作一个函数来调用。

类型这种形式  var get = function()

myObject = {"name" : "me"};

name = 'all';

myObject.double = function(){

var get = function(){

console.log(this.name);

};

get();

};

myObject.double();

以上输出的是all,

而不是me,

这是因为Javascript设计的一个特性造成的。因为要是按照我们的理解,get里面的this应该是绑定double这个外部函数上的,输出的应该是me。

然而这种形式在Javascript里面,函数被调用的时候,this是被绑定到全局变量上的。

对于这种特性,道爷用了一种方法来解决:在方法定义一个变量并给它赋值为this,那么内部函数就可以通过那个变量访问this。

即that = this(对于我个人来说,因为喜欢python的self,更多的是用self = this)

myObject = {"name" : "me"};

name = 'all';

myObject.double = function(){

var self = this;

var get = function(){

console.log(this.name);

};

get();

};

myObject.double();

这样,就可以输出me啦  ^-^

java this self_[原]Javasript 关于self(that) = this用法的理解相关推荐

  1. java se 导原码_Java SE 8新功能导览:Java开发世界中的重大变化

    java se 导原码 我很自豪,像其他专业团队成员一样,是采用OpenJDK的成员之一,但是从过去8个月就加入了,我们经历了Java SE 8 开发,编译,编码,讨论等各个阶段,直到将其付诸实践为止 ...

  2. java 做的原神抽卡模拟小程序

    java做的原神抽卡模拟小程序 难度不大,适合学完面向对象后做着玩. import java.util.ArrayList; import java.util.Calendar; import jav ...

  3. 【操作系统】一起了解操作系统咯 | 原码,反码,补码,你理解到位了吗?

    原码,反码,补码,你理解到位了吗? 如果觉得对你有帮助,能否点个赞或关个注,以示鼓励笔者呢?!博客目录 | 先点这里 首先声明,写一篇博客,不代表知识一定是对的,只是在梳理自己学习在过程的理解,尽量做 ...

  4. 详解Java多线程编程中LockSupport类的线程阻塞用法

    转载自  详解Java多线程编程中LockSupport类的线程阻塞用法 LockSupport类是Java6(JSR166-JUC)引入的一个类,提供了基本的线程同步原语.LockSupport实际 ...

  5. java集合框架中contains(),containsKey()和containsValue()的用法

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. java集合框架中contains(),containsKey()和containsValue()的 ...

  6. Java 反射?反射有什么缺点?你是怎么理解反射的(为什么框架需要反射)?

    ava Java 基础这部分一些简单的问题就直接没有放上来. 需要资料的朋友麻烦一键三连之后点此免费获取! 基础: Java 反射?反射有什么缺点?你是怎么理解反射的(为什么框架需要反射)? 谈谈对 ...

  7. Java 枚举(enum) 详解7种常见的用法<详细>

    JDK1.5引入了新的类型--枚举.在 Java 中它虽然算个"小"功能,却给我的开发带来了"大"方便. 大师兄我[大师兄]又加上自己的理解,来帮助各位理解一下 ...

  8. java中的感叹号是_[Java教程]javascript中的2个感叹号的用法

    [Java教程]javascript中的2个感叹号的用法 0 2014-04-15 19:00:09 !!是逻辑"非非",即是在逻辑"非"的基础上再" ...

  9. Java类中this关键字和static关键字的用法详解

    今天给大家总结介绍一下Java类中this关键字和static关键字的用法. 文章目录 this关键字用法: 1:修饰属性,表示调用类中的成员变量 2:this修饰方法 3:this表示当前对象的引用 ...

最新文章

  1. spring boot 核心_SpringBoot 核心技术 — 自动配置
  2. POJ 1655 Balancing Act (树的重心)
  3. 基于PaaS平台的多应用自集成方案之公共数据集成
  4. java 连接mysql工具类_java连接Mysql数据库的工具类
  5. 首届国际数字科技节启动仪式暨主办单位战略合作签约仪式在京举行
  6. oracle面试题关于课程表获取最高分和名字并且去掉重复,oracle复杂查询练习题
  7. win7 中出现“为了配置TCP/IP,必须安装并启动网络适配卡“问题的解决办法
  8. 微信公众号分销商城(源码+数据库+文档)
  9. [网络应用]winrar主题之Vista Ultimate篇
  10. EditPlus3.3 集成 SVN
  11. 火狐控制台的html,怎么使用火狐浏览器调试网页
  12. xcode-select --install选择安装安装失败:下载失败网络问题(2:散列问题解决方案)
  13. html五子棋游戏制作原理,原生JS+Canvas实现五子棋游戏
  14. 人工神经网络的发展前景,人工神经网络及其应用
  15. 聚焦场景化应用 华为要做数字化转型的“赶路人”
  16. Vue项目中created生命周期重复执行,未缓存下来
  17. 怎么输出链表最后一个元素_听说AI将是人类最后一个发明?听听他怎么说!
  18. C语言获取一个数字各位数的乘积
  19. Iphone版音乐计算机,轻松实现从iPhone上进行音乐等文件的共享复制
  20. 创客学院9天C语言四

热门文章

  1. 如何得到webbrowser的句柄
  2. C语言一趟冒泡交换最小值,C语言单链表冒泡排序为啥以下代码实现不了?
  3. 保存到redis的字符串类型出现斜杆_深入浅出Redis:这次从Redis底层数据结构开始...
  4. python怎么学比较有技巧_学python必须知道的30个技巧
  5. 信息学奥赛一本通 1942:【08NOIP普及组】ISBN号码 | OpenJudge NOI 1.7 29:ISBN号码 | 洛谷 P1055 [NOIP2008 普及组] ISBN 号码
  6. 信息学奥赛一本通 2055:【例3.5】收费
  7. Small Multiple(AtCoder-3621)
  8. 图论 —— 图的连通性 —— Kosaraju 算法
  9. 方格取数(1)(HDU-1565)
  10. 树形结构 —— 并查集 —— 带权并查集