JavaScript严格模式下关于this的几种指向详解


Posted in Javascript onJuly 12, 2017

前言

相信不少人在学习或者使用Javascript的时候,都曾经被 JavaScript 中的 this 弄晕了,那么本文就来整理总结一下在严格模式下 this 的几种指向。

一、全局作用域中的this

在严格模式下,在全局作用域中,this指向window对象

"use strict";
 
 console.log("严格模式");
 console.log("在全局作用域中的this");
 console.log("this.document === document",this.document === document);
 console.log("this === window",this === window);
 this.a = 9804;
 console.log('this.a === window.a===',window.a);

JavaScript严格模式下关于this的几种指向详解

二、全局作用域中函数中的this

在严格模式下,这种函数中的this等于undefined

"use strict";
 
 console.log("严格模式");
 console.log('在全局作用域中函数中的this');
 function f1(){
 console.log(this);
 }
 
 function f2(){
 function f3(){
 console.log(this);
 }
 f3();
 }
 f1();
 f2();

JavaScript严格模式下关于this的几种指向详解

三、 对象的函数(方法)中的this

在严格模式下,对象的函数中的this指向调用函数的对象实例

"use strict";
 
 console.log("严格模式");
 console.log("在对象的函数中的this");
 var o = new Object();
 o.a = 'o.a';
 o.f5 = function(){
 return this.a;
 }
 console.log(o.f5());

JavaScript严格模式下关于this的几种指向详解

四、构造函数的this

在严格模式下,构造函数中的this指向构造函数创建的对象实例。

"use strict";
 
 console.log("严格模式");
 console.log("构造函数中的this");
 function constru(){
 this.a = 'constru.a';
 this.f2 = function(){
 console.log(this.b);
 return this.a;
 }
 }
 var o2 = new constru();
 o2.b = 'o2.b';
 console.log(o2.f2());

JavaScript严格模式下关于this的几种指向详解

五、事件处理函数中的this

在严格模式下,在事件处理函数中,this指向触发事件的目标对象。

"use strict";
 
 function blue_it(e){
 if(this === e.target){
 this.style.backgroundColor = "#00f";
 }
 }
 var elements = document.getElementsByTagName('*');
 for(var i=0 ; i<elements.length ; i++){
 elements[i].onclick = blue_it;
 }
 
 //这段代码的作用是使被单击的元素背景色变为蓝色

六、内联事件处理函数中的this

在严格模式下,在内联事件处理函数中,有以下两种情况:

<button onclick="alert((function(){'use strict'; return this})());">
 内联事件处理1
 </button>
 <!-- 警告窗口中的字符为undefined -->
 
 <button onclick="'use strict'; alert(this.tagName.toLowerCase());">
 内联事件处理2
 </button>
 <!-- 警告窗口中的字符为button -->

后语

参考资料

MDN https://developer.mozilla.org...

延伸资料

JavaScript 严格模式详解 https://3water.com/article/74890.htm

菜鸟学堂 > JavaScript 严格模式 http://edu.3water.com/js/js-strict.html

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
基于IE下ul li 互相嵌套时的bug,排查,解决过程以及心得介绍
May 07 Javascript
获取select元素被选中的文本内容的js代码
Jan 29 Javascript
js图片延迟技术一般的思路与示例
Mar 20 Javascript
ExtJS4如何自动生成控制grid的列显示、隐藏的checkbox
May 02 Javascript
jQuery实现的向下图文信息滚动效果
May 03 Javascript
全面了解JavaScirpt 的垃圾(garbage collection)回收机制
Jul 11 Javascript
完美解决jQuery符号$与其他javascript 库、框架冲突的问题
Aug 09 Javascript
浅谈jquery中next与siblings的区别
Oct 27 Javascript
详解Vue中过度动画效果应用
May 25 Javascript
webpack 单独打包指定JS文件的方法
Feb 22 Javascript
使用Bootstrap做一个朝代历史表
Dec 10 Javascript
vue全局使用axios的操作
Sep 08 Javascript
jQuery+Ajax请求本地数据加载商品列表页并跳转详情页的实现方法
Jul 12 #jQuery
详解如何用webpack打包一个网站应用项目
Jul 12 #Javascript
利用node.js实现自动生成前端项目组件的方法详解
Jul 12 #Javascript
AngularJS实现select的ng-options功能示例
Jul 12 #Javascript
JavaScript基于activexobject连接远程数据库SQL Server 2014的方法
Jul 12 #Javascript
实例详解JavaScript中setTimeout函数的执行顺序
Jul 12 #Javascript
详解Node项目部署到云服务器上
Jul 12 #Javascript
You might like
PHP入门速成(2)
2006/10/09 PHP
用于table内容排序
2006/07/21 Javascript
jquery 页面全选框实践代码
2010/04/02 Javascript
JavaScript 选中文字并响应获取的实现代码
2011/08/28 Javascript
浅谈javascript中基本包装类型
2015/06/03 Javascript
JS实现的文字与图片定时切换效果代码
2015/10/06 Javascript
JS实现漂亮的时间选择框效果
2016/08/20 Javascript
JS回调函数简单用法示例
2017/02/09 Javascript
JavaScript 实现 Tab 点击切换实例代码
2017/03/25 Javascript
浅谈react.js 之 批量添加与删除功能
2017/04/17 Javascript
基于vue的短信验证码倒计时demo
2017/09/13 Javascript
Three.js利用dat.GUI如何简化试验流程详解
2017/09/26 Javascript
本地搭建微信小程序服务器的实现方法
2017/10/27 Javascript
微信小程序自定义对话框弹出和隐藏动画
2018/07/19 Javascript
js实现动态增加文件域表单功能
2018/10/22 Javascript
微信小程序点击图片实现长按预览、保存、识别带参数二维码、转发等功能
2019/07/20 Javascript
Angular进行简单单元测试的实现方法实例
2020/08/16 Javascript
浅析VUE防抖与节流
2020/11/24 Vue.js
vue打开其他项目页面并传入数据详解
2020/11/25 Vue.js
python线程锁(thread)学习示例
2013/12/04 Python
python XlsxWriter模块创建aexcel表格的实例讲解
2018/05/03 Python
PyQt5 界面显示无响应的实现
2020/03/26 Python
HTML5在IE10、火狐下中文乱码问题的解决方法
2013/11/18 HTML / CSS
澳大利亚先进的皮肤和激光诊所购物网站:Soho Skincare
2018/10/15 全球购物
电气工程及其自动化自我评价四篇
2013/09/24 职场文书
物理教育专业毕业生推荐信
2013/11/03 职场文书
大学生期末自我鉴定
2014/02/01 职场文书
宣传口号大全
2014/06/16 职场文书
创建文明城市标语
2014/06/16 职场文书
2014年重阳节老干部座谈会上的讲话稿
2014/09/25 职场文书
酒店管理专业毕业生自我鉴定
2014/09/29 职场文书
2014年教师个人工作总结
2014/11/10 职场文书
医学生自荐信范文
2015/03/05 职场文书
《曾国藩家书》读后感——读家书,立家风
2019/08/21 职场文书
redis通过6379端口无法连接服务器(redis-server.exe闪退)
2021/05/08 Redis
详解SQL的窗口函数
2022/04/21 Oracle