网上的博客和文章关于this指针的有很多,但是每篇文章都是作者自己的心得和理解,其他人理解起来会有偏差,正如岳肃蔡子峰二人根据正本葵花宝典以及自己的理解默写出葵花宝典的残本、林远图根据残本与少林修为写出辟邪剑谱,所以要得到自己的理解就要看正本的“葵花宝典”,我所看的就是猫头鹰书cody lindley所写的《JavaScript启示录》。

this值会被传递给所有函数,其值基于运行时调用函数的上下文,而不是它所定义的位置。例子如下:

var slm={
<span style="white-space:pre"> </span>name:"mumu",
<span style="white-space:pre"> </span>age:24,
<span style="white-space:pre"> </span>sex:"male",
<span style="white-space:pre"> </span>showName:function(){
<span style="white-space:pre">     </span>console.log(this.name);
<span style="white-space:pre"> </span>}
}
var slm2={
<span style="white-space:pre"> </span>name:"mumu2",
<span style="white-space:pre"> </span>age:24,
<span style="white-space:pre"> </span>sex:"male",
<span style="white-space:pre"> </span>showName:slm.showName
}
slm2.showName();//mumu2

如果一个函数里没有调用的对象,那么this默认为全局变量window

var  name="mumu";
function showName(){
<span style="white-space:pre"> </span>console.log(this.name);
}
showName();//mumu

当this值的宿主函数被封装在另一个函数的内部或另一个函数的上下文中被调用时,this的值将永远是对window对象的引用。

例子就如阮一峰的关于闭包问题的思考题,如下:

var name = "The Window";var object = {name : "My Object",getNameFunc : function(){return function(){return this.name;};}};alert(object.getNameFunc()());//The Window
var name = "slm";var obj1= {name: "mumu",showName: function(){alert(this.name);}
};var obj2 = {name: "handsome_mumu",showName: function(){var show = obj1.showName;show();}
};obj2.showName();  //slm

解决以上问题方法就是在父函数使用作用域链保留对this的引用,使this不丢失。

var slm={name:"slm",age:24,sex:"male",show:function(){var that=this;var showme=function (){  console.log(that.name);
<span style="white-space:pre"> </span>}();}
}

还有就是使用call()、apply()、bind()函数定义this的作用域。

javascript的this关键字的理解相关推荐

  1. 对于JavaScript中this关键字的理解

    这是我第二遍学this了,第一遍学的懵懵的.this指哪里都是凭我一个男人的直觉然后控制台输出看看对不对. 刚查了书.博客.视频.理解差不多了.毕竟菜鸡me: 一.首先介绍下什么是this this是 ...

  2. 深入理解Javascript之this关键字

    http://www.laruence.com/2009/09/08/1076.html 08 Sep 09 深入理解Javascript之this关键字 作者: Laruence(   ) 本文地址 ...

  3. javascript:this 关键字

    前言 看过[阮一峰]()的关于 this 的教程,讲了很多比较好的例子,但没有对其本质的东西解释清楚,而且部分例证存在问题:于是,打算重写本章节,从this的本质入手: 本文为作者的原创作品,转载需注 ...

  4. php中this的使用技巧,JavaScript中this关键字使用方法详解

    JavaScript中this关键字使用方法详解 在面向对象编程语言中,对于this关键字我们是非常熟悉的.比如C++.C#和Java等都提供了这个关键字,虽然在开始学习的时候觉得比较难,但只要理解了 ...

  5. JavaScript中this关键字的使用比较

    JavaScript中this关键字的使用比较 this关键字在JavaScript中,用的不能说比较多,而是非常多.那么熟悉this关键字的各种用法则显得非常关键. this有时候就是我们经常说的上 ...

  6. C++中关键字的理解--Static

    C++中关键字的理解---Static    目录:1.static缘起             2.static自我理解             3.static举例使用             4 ...

  7. java static关键字_好程序员Java教程分享static关键字的理解

    好程序员Java教程分享static关键字的理解,static关键字含义可以理解为静态的. 1. 当其修饰属性时,该属性为整个类公有,所有的对象操作的都是同一个静态属性.所以调用时应该使用类名去调用, ...

  8. 深入解析Javascript中this关键字的使用

    深入解析Javascript中面向对象编程中的this关键字 在Javascript中this关键字代表函数运行时,自动生成的一个内部对象,只能在函数内部使用.比如: function TestFun ...

  9. java with关键字_[Java教程]javascript 里面 with 关键字

    [Java教程]javascript 里面 with 关键字 0 2016-02-18 11:00:02 1.with的基本概念 with语句的作用是将代码的作用域设置到一个特定的作用域中,目的是为了 ...

最新文章

  1. shell的数字、字符串处理
  2. java jdk1.8环境变量的配置
  3. robots协议是什么?对网站SEO有什么好处?
  4. FTP linux-500 OOPS问题解决 (转载)
  5. Android 关于“NetworkOnMainThreadException”
  6. 【转】解决多文件编译中连接错误 multiple definition of*****
  7. 快速理解和使用 ES7 await/async
  8. 【转】matlab函数编译成dll供Cpp调用的方法
  9. html利用js生成excel表格(html表格标签生成excel)table2excel实例:一表格多sheets
  10. html 12306页面实现,jQuery模拟12306城市选择框功能简单实现方法示例
  11. Android 重写onBackPressed()方法 不执行问题
  12. 淘宝助手 替代品!【淘宝登货员】研发中
  13. [Spring-cloud-eureka]使用 gradle, spring boot,Spring cloud Eureka 搭建服务注册中心
  14. Systrace 解析
  15. 吾爱破解“凉”了之后,还能去哪儿下载软件?
  16. 第三届CCF计算机职业资格认证考试题解(C++)
  17. 如何点亮或者关闭EMC VMAX的磁盘指示灯
  18. 编译原理:cminus_compiler-2021-fall Lab3
  19. 请教求助,打开U盘显示,你当前无权访问该文件夹。
  20. 基于海康sdk回放下载

热门文章

  1. 安卓开发基础入门系列教程
  2. 计算机技术应用广泛以下属于科学计算的是,计算机技术应用广泛,以下属于科学计算方面的是( )。...
  3. 几种连续型随机变量分布总结
  4. zcmu-5210: 小e的选择题(快速幂)
  5. TeamViewer之坑 不可恢复的错误
  6. 漫谈RocksDB(三)基本操作——动如脱兔,静若处子
  7. 九 用vi编辑器创建和编辑正文文件
  8. 如何确定等势面_逐字稿4:电场中有哪些概念?如何进行分析判断?
  9. 【腾讯优测干货分享】Android内存泄漏的简单检查与分析方法
  10. JS实现页面返回顶部的匀加速运动