JavaScript this 关键词
this是什么呢?
JavaScript this 关键词指的是它所属的对象。
它拥有不同的值,具体取决于它所使用的位置:
- 在方法中,this 指的是所有者对象。
- 单独的情况下,this 指的是全局对象。
- 在函数中,严格模式下,this 是undefined。
- 在事件中,this 指的是接受时间的元素。
方法中的this
在对象方法中,this 指的是此方法的”拥有者“
1 var person = {
2 firstName: "Bill",
3 lastName : "Gates",
4 id : 678,
5 fullName : function() {
6 return this.firstName + " " + this.lastName; //返回 Bill Gates
7 }
8 };
上面的 this 指的就是person 对象。
因为person 对象是fullName 方法的拥有者。
单独的this
在单独使用时,拥有者是全局对象,因此 this 指的是全局对象。
在浏览器窗口中,全局对象是 [object Window]
var x = this; //[object Window]
在严格模式中,如果单独使用,那么 this 指的是全局对象 [object Window]
"use strict";
var x = this; //[object Window]
函数中的 this (默认)
在JavaScript 函数中,函数的拥有者默认绑定 this 。意思就是如果这个函数不在任何一个对象中,单独存在话,那么其拥有者就是浏览器啦,那么其内如果用到了 this 这个 this 指的就是 [objiect Window]
function myFunction() {
return this;
}
函数中的 this (严格模式)
JavaScript 严格模式不允许默认绑定。(至于什么是严格模式,可以参考W3school 专题 严格模式讲解)
在函数中使用时,在严格模式下, this 是未定义的 (undefined)。
"use strict";
function myFunction() {
return this; //undefined
}
事件处理程序中的 this
在 HTML 事件处理程序中, this 指的是接受此事件的 HTML 元素
<button onclick="this.style.display='none'">
点击来删除我!
</button>
上面的 this 指的就是其所在的 button 元素
对象方法绑定
var person = {
firstName : "Bill",
lastName : "Gates",
id : 678,
myFunction : function() {
return this; //[object Object]
}
上面中的 this 会自动绑定 person 这个对象,也就是说 this 是 person 对象 (person 对象是该函数的"拥有者")
var person = {
firstName: "Bill",
lastName : "Gates",
id : 678,
fullName : function() {
return this.firstName + " " + this.lastName; //Bill Gates
}
上面的, this.firstName 意味着 this (person)对象的firstName 属性,相当于 person.firstName.
以上内容均在W3school 的 JS this 专题有讲解,参考地址:https://www.w3school.com.cn/js/js_this.asp
JavaScript this 关键词的更多相关文章
- 松软科技Web课堂:JavaScript this 关键词
实例 var person = { firstName: "Bill", lastName : "Gates", id : 678, fullName : fu ...
- JavaScript new 关键词解析及原生实现 new
java里面,new 运算符是用来实例化一个类,从而在内存中分配一个实例对象. 但在 javascript 中,原型语言没类,只有对象与原型链继承 JavaScript 中 new 表达式的作用是生成 ...
- 【前端安全】JavaScript防http劫持与XSS
作为前端,一直以来都知道HTTP劫持与XSS跨站脚本(Cross-site scripting).CSRF跨站请求伪造(Cross-site request forgery).但是一直都没有深入研究过 ...
- javascript引擎工作原理
1. 什么是JavaScript解析引擎? 简单地说,JavaScript解析引擎就是能够“读懂”JavaScript代码,并准确地给出代码运行结果的一段程序.比方说,当你写了 var a = 1 + ...
- 我们应该如何去了解JavaScript引擎的工作原理
“读了你的几篇关于JS(变量对象.作用域.上下文.执行代码)的文章,我个人觉得有点抽象,难以深刻理解.我想请教下通过什么途径能够深入点的了解javascript解析引擎在执行代码前后是怎么工作的,ec ...
- 【转】我们应该如何去了解JavaScript引擎的工作原理
原文地址:http://www.nowamagic.net/librarys/veda/detail/1579 昨天收到一封来自深圳的一位前端童鞋的邮件,邮件内容如下(很抱歉,未经过他的允许,公开邮件 ...
- JavaScript运行原理解析
原文:1.http://blog.csdn.net/liaodehong/article/details/50488098 2.Stack的三种含义 (阮一峰) 3. http://lib.csdn. ...
- 前端开发【第3篇:JavaScript序】
JavaScript历史 聊聊JavaScript的诞生 JavaScirpt鼻祖:Bremdan Eich(布兰登·艾奇),JavaScript的诞生于浏览器的鼻祖网景公司(Netscape),发布 ...
- javascript 数据类型 -- 分类
一.概念 Javascript 中有6中基本类型(也称 原始类型/原始值): number . sring . boolean . symbol . undefined 和 null ,和1种引用类型 ...
随机推荐
- CE未知数值修改
一样,用植物大战僵尸测试.来搜索修改向日葵生产阳光的CD值. 由于开始并不知道向日葵cd的初始值,所以用CE搜索未知的初始值 返回游戏,每次向日葵晃一下搜索一下减少的值. 锁定修改为0发现成功. 然后 ...
- 【Java面试必备JVM】JVM看这篇就够了
链接–>JVM
- break 与 continue 的作用 详解
1.break 用break语句可以使流程跳出switch语句体,也可以用break语句在循环结构终止本层循环体,从而提前结束本层循环. 使用说明: (1)只能在循环体内和switch语句体内使用br ...
- SpringBoot 及其 基本原理、配置文件(二)
个人博客网:https://wushaopei.github.io/ (你想要这里多有) 一.SpringBoot 的版本与启动过程 1.SpringBoot都是jar工程 2.Spring ...
- Java实现 LeetCode 1111 有效括号的嵌套深度(阅读理解题,位运算)
1111. 有效括号的嵌套深度 有效括号字符串 定义:对于每个左括号,都能找到与之对应的右括号,反之亦然.详情参见题末「有效括号字符串」部分. 嵌套深度 depth 定义:即有效括号字符串嵌套的层数, ...
- Java实现 LeetCode 124 二叉树中的最大路径和
124. 二叉树中的最大路径和 给定一个非空二叉树,返回其最大路径和. 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列.该路径至少包含一个节点,且不一定经过根节点. 示例 1: 输入: ...
- java实现蓝桥杯密码脱落
一 问题描述 X星球的考古学家发现了一批古代留下来的密码. 这些密码是由A.B.C.D 四种植物的种子串成的序列. 仔细分析发现,这些密码串当初应该是前后对称的(也就是我们说的镜像串). 由于年代久远 ...
- LoadRunner性能测试笔试/面试题
客户交付一个性能测试项目,请阐述你的实施流程. 测试设计阶段: 1)了解被测系统的性能需求,定义测试目标和范围: 2)了解系统的技术信息,如系统架构等: 3)确定测试方案.进度安排,并制定测试计划,场 ...
- [蓝桥杯]算法提高 GPA
问题描述 输入A,B两人的学分获取情况,输出两人GPA之差. 输入格式 输入的第一行包含一个整数n表示A的课程数,以下n行每行Si,Ci分别表示第i个课程的学分与A的表现. GPA=Σ(Si*Ci) ...
- airpods2隐藏的使用技巧(十)点
airpods的凭借出色的外观.不错的音质以及非常人性化的用户体验秒杀了同类型的许多真无线蓝牙耳机,以下是第二代产品airpods2一些使用的技巧,推荐给大家. 一. 随时随地查看airpods2 ...