Javascript this关键字 指向详解

面向对象语言中 this 表示当前对象的一个引用。在 JavaScript 中 this 不是固定不变的,它会随着执行环境的改变而改变。

1) 单独使用,this 表示全局对象。

<script type="text/javascript">console.log(this) // 指向window全局对象
</script>

2) 在方法中,this 表示该方法所属的对象。

var person = {firstName: "John",lastName : "Doe",id     : 5566,fullName : function() {return this.firstName + " " + this.lastName; // 指向person对象}
};
person.fullName();  // John Doe

3)在函数中,this 表示全局对象。 在严格模式下,this 是未定义的(undefined)。

<script type="text/javascript">var q = "hello"var func = function(){var q = 'wang'console.log(this.q) // hello}func()
</script>
<script type="text/javascript">var q = "hello"var func = function(){var q = 'wang'console.log(this.q)  // Cannot read property 'q' of undefined}func()
</script>
  1. 在事件中,this 表示接收事件的元素
<button onclick="this.style.display='none'">点我后我就消失了</button>

5) 作为构造函数调用 构造函数试图初始化这个新创建的对象,并将这个对象作为其调用上下文,this 指向这个新创建的对象。

var q = 'window'
function Func() {this.q = 'hello'console.log(this.q)  //hello
}
var obj = new Func
  1. 通过函数的call/apply方法间接调用 call/apply方法的第一个参数是调用上下文,在函数体内,通过this获得对它的引用。
var q = 'window'
function func() {console.log(this.q)
}
var obj = {q: 'obj'
}
func.apply()  //window
func.call() //window
func.apply(obj) //obj
func.call(obj) //obj
  1. 箭头独立函数 : 本身没有this,内部的this就是外层代码块作用域中的this
    因箭头函数没有this,固不能用作构造函数,否则会报错
var a = 0
var test = ()=>{var a = 1console.log(this.a)
}
test() // 0

Javascript this关键字 指向详解相关推荐

  1. 深入理解 JavaScript 之 this指向详解

    前端开发人员在进阶过程中总会遇到一个疑难杂症:Javascript的this this到底指向什么哪个对象啊? 要爆炸了有木有? 1.this 在函数执行时,this 总是指向调用该函数的对象.要判断 ...

  2. JavaScript中的this详解

      前  言  this  JavaScript中的this详解 this详解 This的指向有几种情况?如何人为控制? [谁调用this,this指向谁!!] [this的指向,不关心this写在哪 ...

  3. 前端this指向详解

    前端this指向详解 什么是this this在不同应用场景中的取值 普通函数(非箭头函数)被调用时的this指向 普通函数(非箭头函数)作为对象方法被调用时的this指向 普通函数(非箭头函数)作为 ...

  4. Javascript常用的设计模式详解

    Javascript常用的设计模式详解 阅读目录 一:理解工厂模式 二:理解单体模式 三:理解模块模式 四:理解代理模式 五:理解职责链模式 六:命令模式的理解: 七:模板方法模式 八:理解javas ...

  5. 【java】java 关键字: synchronized详解

    1.概述 转载:关键字: synchronized详解 [Java]Synchronized 有几种用法 [java] 从hotspot底层对象结构理解锁膨胀升级过程 [java]动态高并发时为什么推 ...

  6. java关键字super指什么_java 关键字super详解及用法

    java 关键字super详解 一.super关键字 在JAVA类中使用super来引用父类的成分,用this来引用当前对象,如果一个类从另外一个类继承,我们new这个子类的实例对象的时候,这个子类对 ...

  7. C++-[override]关键字使用详解

    本文介绍了C++ override关键字使用详解以及与重载的区别. C++ override关键字使用详解 一.override作用 二.override在基类与派生类的应用 2.1. 纯虚函数 2. ...

  8. 众望所归的《JAVASCRIPT凌厉开发--EXT详解与实践 》终于上市了!

    大家好,我是这本书的策划编辑,经过努力,这本书终于上市了. 从创作开始,我们的目标就是写一本真正适合开发者参考和借鉴的EXT书,写作过程中,经过了无数次讨论和痛苦修订,感谢三位作者付出的艰辛劳动. 这 ...

  9. JavaScript中getBoundingClientRect()方法详解

    JavaScript中getBoundingClientRect()方法详解 getBoundingClientRect() 这个方法返回一个矩形对象,包含四个属性:left.top.right和bo ...

最新文章

  1. 《用户至上:用户研究方法与实践(原书第2版)》一 3.4 法律层面的考虑
  2. vue在created调用点击方法_vue中created、mounted等方法整理
  3. 在django restful framework中设置django model的property
  4. 关于导航按钮在其他尺寸下显示问题
  5. Android Notification总结
  6. SpringCloud框架搭建+实际例子+讲解+系列五
  7. OpenShift 4 - 部署一个基于 Serverless 的 Banking 应用
  8. oracle序列修改语句
  9. amqp activemq_Spring AMQP ActiveMQ教程(第1部分)
  10. linux应用--yum
  11. 微服务设计笔记——几种远程过程调用方法
  12. 计算机网络相关词汇,计算机网络英语词汇
  13. 思科交换机配置命令大全
  14. antd select show-search搜索时 拼音首字母匹配汉字模糊查询
  15. 计算机应用宣传传统文化,计算机应用工程系创建优秀传统文化特色班级侧记
  16. 岗位、职位、职级、职务的区别
  17. vue 数组元素替换_解决vue数组中对象属性变化页面不渲染问题
  18. 嵌入式--接口--MIPI接口
  19. 2019---高考加油!!!
  20. 百度SEO浏览器插件开发,能够实时显示百度搜索排名的一款插件 seo.lantianye3.top出品

热门文章

  1. zookeeper windows 下安装
  2. 浅谈JavaScript中闭包
  3. WindowProc和DefWindowProc的区别
  4. struts.properties文件
  5. 城市轨道交通运营票务管理论文_城市轨道交通运营管理专业就业前景怎么样?中职优选告诉你...
  6. keras框架:目标检测Faster-RCNN思想及代码
  7. leetcode1437. 是否所有 1 都至少相隔 k 个元素
  8. 使用一些我喜欢的东西开始使用ES6
  9. 您的第一个简单的机器学习项目
  10. 简述yolo1-yolo3_使用YOLO框架进行对象检测的综合指南-第一部分