Javascript this关键字 指向详解

Javascript this关键字 指向详解

面向对象语言中 this 表示当前对象的一个引用。在 JavaScript 中 this 不是固定不变的,它会随着执行环境的改变而改变。

1) 单独使用,this 表示全局对象。

<script type="text/javascript">console.log(this) // 指向window全局对象
</script>

2) 在方法中,this 表示该方法所属的对象。

var person = {firstName: "John",lastName : "Doe",id     : 5566,fullName : function() {return this.firstName + " " + this.lastName; // 指向person对象}
};
person.fullName();  // John Doe

3)在函数中,this 表示全局对象。 在严格模式下,this 是未定义的(undefined)。

<script type="text/javascript">var q = "hello"var func = function(){var q = 'wang'console.log(this.q) // hello}func()
</script>
<script type="text/javascript">var q = "hello"var func = function(){var q = 'wang'console.log(this.q)  // Cannot read property 'q' of undefined}func()
</script>
  1. 在事件中,this 表示接收事件的元素
<button onclick="this.style.display='none'">点我后我就消失了</button>

5) 作为构造函数调用 构造函数试图初始化这个新创建的对象,并将这个对象作为其调用上下文,this 指向这个新创建的对象。

var q = 'window'
function Func() {this.q = 'hello'console.log(this.q)  //hello
}
var obj = new Func
  1. 通过函数的call/apply方法间接调用 call/apply方法的第一个参数是调用上下文,在函数体内,通过this获得对它的引用。
var q = 'window'
function func() {console.log(this.q)
}
var obj = {q: 'obj'
}
func.apply()  //window
func.call() //window
func.apply(obj) //obj
func.call(obj) //obj
  1. 箭头独立函数 : 本身没有this,内部的this就是外层代码块作用域中的this
    因箭头函数没有this,固不能用作构造函数,否则会报错
var a = 0
var test = ()=>{var a = 1console.log(this.a)
}
test() // 0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/401533.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

storyboard隐藏iphone软键盘

xcode 4.3.2 storyboard ** 点击软键盘的return键隐藏软键盘 .h文件定义IBAction -(IBAction)textFieldReturn:(id)sender; .m文件实现 -(IBAction)textFieldReturn:(id)sender{[sender resignFirstResponder];//关键代码 } storyboard中&#xff0c;选中文本框&#xff0c;查…

常用命令-tar 加密

2019独角兽企业重金招聘Python工程师标准>>> 在当前目录下有一个pma目录的文件夹: 1、使用tar对文件压缩加密&#xff1a; # tar -zcvf - pma|openssl des3 -salt -k password | dd ofpma.des3 完成将得到一个pma.des3的打包文件&#xff0c;用你设置的密码替换pas…

ORM SQLAlchemy 简介

对象关系映射&#xff08;Object Relational Mapping&#xff0c;简称ORM使用DB-API访问数据库&#xff0c;需要懂 SQL 语言&#xff0c;能够写 SQL 语句&#xff0c;如果不想懂 SQL&#xff0c;又想使用关系型数据库&#xff0c;可以使用 ORM,一个 ORM , 它的一端连着 Databas…

Javascript let和const

Javascript let和const 在 ES6 之前&#xff0c;JavaScript 只有两种作用域&#xff1a; 全局变量 &#xff1a; 在函数外声明的变量作用域是全局的 局部变量&#xff08;函数变量&#xff09;&#xff1a;在函数内声明的变量作用域是局部的 <script type"text/jav…

Javascript JSON格式

Javascript JSON格式 1&#xff09;什么是JSON&#xff08;JavaScript Object Notation&#xff09;&#xff1f; 是一种轻量级的数据交换格式 是独立的语言 2&#xff09;JSON 语法规则 数据为 键/值 对 数据由逗号分隔 大括号保存对象 方括号保存数组 JSON 对象&#xff…

转:OAUTH协议简介

OAUTH协议简介 原文链接 摘要&#xff1a;OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAUTH的授权不会使第 三方触及到用户的帐号信息&#xff08;如用户名与密码&#xff09;&#xff0c;即第三方无需使用用户的用户名与密…

生产库自动派送报表派送失败之重新派送

/*Description: 生产库自动派送报表派送失败之重新派送 */USE [DB] --Replace yourDBGODECLARE ProductDate nvarchar(10) N2014-01-01DECLARE FactoryCode nvarchar(10) NXDECLARE strSQL nvarchar(3000)DECLARE strCRLF nvarchar(…

java集合框架05——ArrayList和LinkedList的区别

前面已经学习完了List部分的源码&#xff0c;主要是ArrayList和LinkedList两部分内容&#xff0c;这一节主要总结下List部分的内容。 List概括 先来回顾一下List在Collection中的的框架图&#xff1a; 从图中我们可以看出&#xff1a; 1. List是一个接口&#xff0c;它继承与Co…

Javascript 函数详解

Javascript 函数详解 1&#xff09;函数声明&#xff1a; 通过关键字function定义&#xff0c;把函数作为变量来声明 函数声明后不会立即执行&#xff0c;会在我们需要的时候调用到。 <script>function myFunction(a, b) {return a * b;}// js对大小写敏感&#xff0c;…

asp.net仿搜索引擎关键字高亮.搜索高亮

以前做关键字高亮都是直接使用replace方法直接替换 如 string input"AAbCC"; string keyword"b"; inputinput.ToUpp(); keywordkeyword.ToUpp(); ss.Replace(keyword,"<font>"keyword"</font>"); 如果这样 输出: "AA…

easyui validatebox 验证类型

required: "必选字段", remote: "请修正该字段", email: "请输入正确格式的电子邮件", url: "请输入合法的网址", date: "请输入合法的日期", dateISO: "请输入合法的日期 (ISO).&…

SSL 1461——最大连续数列的和

Description 求最大连续子序列的和 Input 第一行输入n(n<500),第二行为n个以空格分开的整数(-1000到1000之间)&#xff1b; Output 该序列中最大的连续子序列的和 Sample Input &#xff16;   1 2 -5 6 7 8 Sample Output 21 每次读入一个数判断它是否为负数&#xff0…

ln链接使用

首先说明下Linux下删除、移动、复制的意义。删除:是将inode表放回空闲区由1变为0&#xff0c;还可以找回文件移动:是将inode表不变&#xff0c;将文件转移至对应条目&#xff0c;删除原条录。同分区上操作速度快&#xff0c;不同分区相当于创建、删除原文件复制:是重建inode表&…

poj 2886Who Gets the Most Candies?

题目连接&#xff1a;http://poj.org/problem?id2886 这道题是模拟约瑟夫环&#xff0c;其具体实现和poj2826差不多的。 我的代码如下&#xff1a; #include<cstdio> #include<cstdlib> #include<cmath> #include<memory.h> int seg_tree[500010<&…

Javascript 对象一(对象详解)

JS创建对象的几种方法1. Object 构造函数 创建 2. 对象字面量表示法 创建 3. 使用工厂模式创建对象 在 Car 函数中&#xff0c;返回的是一个对象。那么我们就无法判断返回的对象究竟是一个什么样的类型。于是就出现了第四种创建对象的模式 4. 使用构造函数创建对象 构造函数…

有一个长为n的数组A,求满足0≤a≤bn的A[b]-A[a]的最大值。 给定数组A及它的大小n,请返回最大差值。...

// ConsoleApplication10.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> #include <vector> #include <list> #include <deque> #include <string> #include <algorithm> using namespace st…

【BZOJ】1649: [Usaco2006 Dec]Cow Roller Coaster(dp)

http://www.lydsy.com/JudgeOnline/problem.php?id1649 又是题解。。。 设f[i][j]表示费用i长度j得到的最大乐趣 f[i][end[a]]max{f[i-cost[a][begin[a]]w[a]} 当f[i-cost[a][begin[a]]可行时 初始化f-1 f[0][0]0 #include <cstdio> #include <cstring> #include …

Delphi工具之Image Editor

Delphi Image Editor是一个工具&#xff0c;可用它来创建并编辑位图&#xff08;.bmp&#xff09;、图标&#xff08;.ico&#xff09;和光标&#xff08;.cur&#xff09;&#xff0c;还可以用它创建资源工程&#xff0c;将多个位图、图标和光标包含到单个资源文件&#xff08…

小程序 获取当前用户城市信息(省市区)

步骤使用 wx.getLocation来获取位置授权&#xff1a;获取到设备当前的地理位置信息&#xff0c;这个信息是当前位置的经纬度使用其他第三方地图服务的API&#xff1a;获取当前位置是处于哪个国家&#xff0c;哪个城市等信息&#xff08;eg&#xff1a;腾讯地图、百度地图&#…

PYTHON_正则表达式

字符匹配方法 在编写处理字符串的程序或网页时&#xff0c;经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。 通配符&#xff1a;* 元字符&#xff1a;\ ^ $ * . | ? {} [] () ^ 表示匹配字符串的开头。在…