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获取dom 对象 ajax操作 读写cookie函数
Nov 18 Javascript
jquery 3D球状导航的文章分类
Jul 06 Javascript
jQuery的animate函数学习记录
Aug 08 Javascript
使用VS开发 Node.js指南
Jan 06 Javascript
Node.js中路径处理模块path详解
Nov 14 Javascript
浅谈Javascript事件对象
Feb 05 Javascript
Bootstrap面板学习使用
Feb 09 Javascript
JavaScript中递归实现的方法及其区别
Sep 12 Javascript
React从react-router路由上做登陆验证控制的方法
May 10 Javascript
详解JSON Web Token 入门教程
Jul 30 Javascript
js实现拾色器插件(ColorPicker)
May 21 Javascript
JavaScript中条件语句的优化技巧总结
Dec 04 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下防止单引号,双引号在接受页面转义的设置方法
2008/09/25 PHP
PHP 一个比较完善的简单文件上传
2010/03/25 PHP
ZendFramework框架实现连接两个或多个数据库的方法
2016/12/08 PHP
PHP 计算两个时间段之间交集的天数示例
2019/10/24 PHP
Avengerls vs KG BO3 第三场2.18
2021/03/10 DOTA
js 页面传参数时 参数值含特殊字符的问题
2009/12/13 Javascript
图片动画横条广告带上下滚动的JS代码
2013/10/25 Javascript
浅析JavaScript中的隐式类型转换
2013/12/05 Javascript
JS实现图片放大镜效果的方法
2015/02/27 Javascript
在windows上用nodejs搭建静态文件服务器的简单方法
2016/08/11 NodeJs
Linux使用Node.js建立访问静态网页的服务实例详解
2017/03/21 Javascript
vue分类筛选filter方法简单实例
2017/03/30 Javascript
Angularjs修改密码的实例代码
2017/05/26 Javascript
JavaScript hasOwnProperty() 函数实例详解
2017/08/04 Javascript
HTML5开发Kinect体感游戏的实例应用
2017/09/18 Javascript
iview同时验证多个表单问题总结
2018/09/29 Javascript
小程序实现页面顶部选项卡效果
2018/11/06 Javascript
react-native聊天室|RN版聊天App仿微信实例|RN仿微信界面
2019/11/12 Javascript
jQuery使用ajax传递json对象到服务端及contentType的用法示例
2020/03/12 jQuery
JavaScript 俄罗斯方块游戏实现方法与代码解释
2020/04/08 Javascript
vue-cli4.x创建企业级项目的方法步骤
2020/06/18 Javascript
使用Element的InfiniteScroll 无限滚动组件报错的解决
2020/07/27 Javascript
Node.js web 应用如何封装到Docker容器中
2020/09/01 Javascript
Python字符串中查找子串小技巧
2015/04/10 Python
python输入错误密码用户锁定实现方法
2017/11/27 Python
Python实现监控键盘鼠标操作示例【基于pyHook与pythoncom模块】
2018/09/04 Python
Python 获取div标签中的文字实例
2018/12/20 Python
python 批量下载bilibili视频的gui程序
2020/11/20 Python
python gui开发——制作抖音无水印视频下载工具(附源码)
2021/02/07 Python
英国优质家居用品网上品牌:URBANARA
2018/06/01 全球购物
飞利浦美国官网:Philips美国
2020/02/28 全球购物
经贸日语专业个人求职信
2013/12/13 职场文书
《北大荒的秋天》教学反思
2014/04/14 职场文书
html+css实现赛博朋克风格按钮
2021/05/26 HTML / CSS
SpringBoot读取Resource下文件的4种方法
2021/07/02 Java/Android
Android RecyclerView实现九宫格效果
2022/06/28 Java/Android