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 相关文章推荐
js select常用操作控制代码
Mar 16 Javascript
Prototype的Class.create函数解析
Sep 22 Javascript
jquery限制输入字数,并提示剩余字数实现代码
Dec 24 Javascript
编写js扩展方法判断一个数组中是否包含某个元素
Nov 08 Javascript
JS实现的通用表单验证插件完整实例
Aug 20 Javascript
JavaScript实现九九乘法表的简单实例
Jun 07 Javascript
js中判断变量类型函数typeof的用法总结
Aug 09 Javascript
Bootstrap组合上、下拉框简单实现代码
Mar 06 Javascript
浅谈基于Vue.js的移动组件库cube-ui
Dec 20 Javascript
vue.js将时间戳转化为日期格式的实现代码
Jun 05 Javascript
使用Vue.js 和Chart.js制作绚丽多彩的图表
Jun 15 Javascript
js实现多图和单图上传显示
Dec 18 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 zip文件解压类代码
2009/12/02 PHP
兼容性比较好的PHP生成缩略图的代码
2011/01/12 PHP
PHP实现根据图片色界在不同位置加水印的方法
2015/08/08 PHP
php头像上传预览实例代码
2017/05/02 PHP
TP5框架实现签到功能的方法分析
2020/04/05 PHP
深入解析PHP底层机制及相关原理
2020/12/11 PHP
PHP7 错误处理机制修改
2021/03/09 PHP
javascript 避免闭包引发的问题
2009/03/17 Javascript
js 通用javascript函数库整理
2011/08/14 Javascript
jquery制作弹窗提示窗口代码分享
2014/03/02 Javascript
七个很有意思的PHP函数
2014/05/12 Javascript
jsonp跨域请求数据实现手机号码查询实例分析
2015/12/12 Javascript
javascript设置和获取cookie的方法实例详解
2016/01/05 Javascript
使用JS读取XML文件的方法
2016/11/25 Javascript
原生js实现简单的链式操作
2017/07/04 Javascript
微信小程序如何获取用户手机号
2018/01/26 Javascript
父组件中vuex方法更新state子组件不能及时更新并渲染的完美解决方法
2018/04/25 Javascript
微信公众平台 客服接口发消息的实现代码(Java接口开发)
2019/04/17 Javascript
[03:14]辉夜杯主赛事 12月25日每日之星
2015/12/26 DOTA
[53:10]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs VG 第一场
2018/04/11 DOTA
精确查找PHP WEBSHELL木马的方法(1)
2011/04/12 Python
详解Python 模拟实现生产者消费者模式的实例
2017/08/10 Python
Python实现扩展内置类型的方法分析
2017/10/16 Python
python中将zip压缩包转为gz.tar的方法
2018/10/18 Python
pyqt5 实现工具栏文字图片同时显示
2019/06/13 Python
python单向循环链表原理与实现方法示例
2019/12/03 Python
Pytorch的mean和std调查实例
2020/01/02 Python
python求解汉诺塔游戏
2020/07/09 Python
python exit出错原因整理
2020/08/31 Python
西班牙伏林航空公司:Vueling
2016/08/05 全球购物
通息工程毕业生自荐信
2013/10/16 职场文书
新任教师自我鉴定
2014/02/24 职场文书
小班上学期评语
2014/05/05 职场文书
宿舍卫生管理制度
2015/08/05 职场文书
总结几个非常实用的Python库
2021/06/26 Python
Python实现Hash算法
2022/03/18 Python