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 数值项目的格式化函数代码
May 14 Javascript
js replace正则表达式应用案例讲解
Jan 17 Javascript
javascript重写alert方法的实例代码
Mar 29 Javascript
关于微信中a链接无法跳转问题
Aug 02 Javascript
JavaScript中的ajax功能的概念和示例详解
Oct 17 Javascript
原生js实现中奖信息无间隙滚动效果
Jan 18 Javascript
JS/jquery实现一个网页内同时调用多个倒计时的方法
Apr 27 jQuery
Angular中$state.go页面跳转并传递参数的方法
May 09 Javascript
利用jQuery异步上传文件的插件用法详解
Jul 19 jQuery
移动端Ionic App 资讯上下循环滚动的实现代码(跑马灯效果)
Aug 29 Javascript
Angular7中创建组件/自定义指令/管道的方法实例详解
Apr 02 Javascript
vue实现滚动鼠标滚轮切换页面
Dec 13 Vue.js
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维护文件系统
2006/10/09 PHP
修改Zend引擎实现PHP源码加密的原理及实践
2008/04/14 PHP
php5 non-thread-safe和thread-safe这两个版本的区别分析
2010/03/13 PHP
PHP与C#分别格式化文件大小的代码
2011/05/14 PHP
PHP函数之日期时间函数date()使用详解
2013/09/09 PHP
基于php实现随机合并数组并排序(原排序)
2015/11/26 PHP
Yii2实现ajax上传图片插件用法
2016/04/28 PHP
jquery设置控件位置的方法
2013/08/21 Javascript
jquery的live使用注意事项
2014/02/18 Javascript
jQuery中的一些常见方法小结(推荐)
2016/06/13 Javascript
详解微信小程序开发之——wx.showToast(OBJECT)的使用
2017/01/18 Javascript
JavaScript 实现 Tab 点击切换实例代码
2017/03/25 Javascript
Angular实现的自定义模糊查询、排序及三角箭头标注功能示例
2017/12/28 Javascript
浅析Angular19 自定义表单控件
2018/01/31 Javascript
[02:37]2018DOTA2亚洲邀请赛赛前采访 VP.no[o]ne心中最强SOLO是谁
2018/04/04 DOTA
python提示No module named images的解决方法
2014/09/29 Python
Python中的列表生成式与生成器学习教程
2016/03/13 Python
Python随机读取文件实现实例
2017/05/25 Python
Python2.7读取PDF文件的方法示例
2017/07/13 Python
django反向解析URL和URL命名空间的方法
2018/06/05 Python
Python输出\u编码将其转换成中文的实例
2018/12/15 Python
什么是python的列表推导式
2020/05/26 Python
Pytorch mask-rcnn 实现细节分享
2020/06/24 Python
CSS3中伪元素::before和::after的用法示例
2017/09/18 HTML / CSS
美国玛丽莎收藏奢华时尚商店:Marissa Collections
2016/11/21 全球购物
英国最大的专业户外零售商:Mountain Warehouse
2018/06/06 全球购物
雷曼兄弟的五金店:Lehman’s Hardware Store
2019/04/10 全球购物
国际贸易专业推荐信
2013/11/15 职场文书
农村产权制度改革实施方案
2014/03/21 职场文书
小区物业门卫岗位职责
2014/04/10 职场文书
民生工作实施方案
2014/05/31 职场文书
群众路线对照检查材料思想汇报怎么写
2014/09/18 职场文书
工会积极分子个人总结
2015/03/03 职场文书
银行自荐信范文
2015/03/25 职场文书
太空授课观后感
2015/06/17 职场文书
如何Tomcat中使用ipv6地址
2022/05/06 Servers