java script this_JavaScript this 关键字

JavaScript this 关键字

面向对象语言中 this 表示当前对象的一个引用。

但在 JavaScript 中 this 不是固定不变的,它会随着执行环境的改变而改变。

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

如果单独使用,this 表示全局对象。

在函数中,this 表示全局对象。

在函数中,在严格模式下,this 是未定义的(undefined)。

在事件中,this 表示接收事件的元素。

类似 call() 和 apply() 方法可以将 this 引用到任何对象。

实例

varperson={firstName:"John",lastName:"Doe",id:5566,fullName:function(){returnthis.firstName+""+this.lastName;}};

尝试一下 »

方法中的 this

在对象方法中, this 指向调用它所在方法的对象。

在上面一个实例中,this 表示 person 对象。

fullName 方法所属的对象就是 person。

实例

fullName:function(){returnthis.firstName+""+this.lastName;}

尝试一下 »

单独使用 this

单独使用 this,则它指向全局(Global)对象。

在浏览器中,window 就是该全局对象为 [object Window]:

实例

varx=this;

尝试一下 »

严格模式下,如果单独使用,this 也是指向全局(Global)对象。

实例

"use strict";varx=this;

尝试一下 »

函数中使用 this(默认)

在函数中,函数的所属者默认绑定到 this 上。

在浏览器中,window 就是该全局对象为 [object Window]:

实例

functionmyFunction(){returnthis;}

尝试一下 »

函数中使用 this(严格模式)

严格模式下函数是没有绑定到 this 上,这时候 this 是 undefined。

实例

"use strict";functionmyFunction(){returnthis;}

尝试一下 »

事件中的 this

在 HTML 事件句柄中,this 指向了接收事件的 HTML 元素:

实例

点我后我就消失了

尝试一下 »

对象方法中绑定

下面实例中,this 是 person 对象,person 对象是函数的所有者:

实例

varperson={firstName:"John",lastName:"Doe",id:5566,myFunction:function(){returnthis;}};

尝试一下 »

实例

varperson={firstName:"John",lastName:"Doe",id:5566,fullName:function(){returnthis.firstName+""+this.lastName;}};

尝试一下 »

说明: this.firstName 表示

this (person) 对象的 firstName 属性。

显式函数绑定

在 JavaScript 中函数也是对象,对象则有方法,apply 和 call 就是函数对象的方法。这两个方法异常强大,他们允许切换函数执行的上下文环境(context),即 this 绑定的对象。

在下面实例中,当我们使用 person2 作为参数来调用 person1.fullName 方法时, this 将指向 person2, 即便它是 person1 的方法:

实例

varperson1={fullName:function(){returnthis.firstName+""+this.lastName;}}varperson2={firstName:"John",lastName:"Doe",}person1.fullName.call(person2);//返回 "John Doe"

尝试一下 »

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

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

相关文章

trim函数的作用 $.trim(str)

去掉字符序列左边和右边的空格转载于:https://www.cnblogs.com/dandeliongogo/p/6610890.html

php数据库备份脚本

// 备份数据库 $host "localhost"; $user "root"; //数据库账号 $password ""; //数据库密码 $dbname "mysql"; //数据库名称 // 这里的账号、密码、名称都是从页面传过来的 if (!mysql_connect($host, $user, $password)) // 连接…

java swing 案例详解_《Java Swing图形界面开发与案例详解》PDF_IT教程网

资源名称:《Java Swing图形界面开发与案例详解》PDF内容简介:《Java Swing图形界面开发与案例详解》全书共20章,其中第1~2章主要介绍有关Swing的基础知识,包括Swing的基本概述、如何使用IDE开发Swing程序;第…

水晶球错觉

我注意到人们有时会避免进行彻底的测试。 对于某些人来说,这听起来像是伪造的,但是请听我说……我确实理解为什么会这样。 测试会产生被困的感觉,每引入一个新的测试,负担就会加重。 建立稳定,无干扰且质量保证的测试套…

Python—day3

1、字符串在C里边就是字符数组 Python里边一切事物都是对象,对象则是类创建的 2、set集合 set是一个无序且不能重复的元素集合 #!/usr/bin/env python# encoding: utf-8#set对象不能有重复s1 set()s1.add(alex)print(s1)s1.add(alex)print(s1)s1.add(shidong)print…

iOS - The file “XXX.app” couldn’t be opened because you don’t have permission to view it.

当引入第三方的框架的时候 容易产生以下问题: The file “XXX.app” couldn’t be opened because you don’t have permission to view it. 如图: 造成的原因: info文件中的字段Executable file 与 build settings栏中的Packaging中的Produc…

Google Guava v07范例

我们在TouK举办了一个名为“每周技术研讨会”的活动,即每个星期五的16:00,每个愿意参加的人都有一个演讲。 我们展示了我们在家学习和学习的东西,但是我们也设有一个公告板,上面有人们想听的话题。 上周MaciejPrchniak谈论了Cloju…

推荐一些经过实践检验的学习方法

作者做了多年的Java培训教师,也接触过不少初学者,根据多年的教学互动经验,总结了一些能少走弯路的学习方法,供大家参考。 第一,是要多学多练,这似乎是废话,但真正能非常上心学习的人还真是少数&…

使JFrame透明

首先创建一个带有滑块的框架,该滑块将用于设置透明度量。 import javax.swing.JFrame; import javax.swing.JSlider;public class TransparentFrame extends JFrame {public TransparentFrame() {setTitle(Transparent Frame);setSize(400,400);setDefaultCloseOper…

第一次作业之成员介绍

Lab205的新鲜血液 很理所当然的,实验室的4枚“小鲜肉”在现代软工的课程上组成了一个team,作为一个负责的team长,我当然要放上组员们的自述啦!(为什么不是他述,╭(╯^╰)╮,谁让我是个傲娇的组长…

java自定义分页标签_自定义分页标签--仿javaeye分页效果

效果如图:1、JSP规范1.1版本后增加了自定义标签库。实现自定义标签的步骤(1)开发自定义标签处理类。(2)建立*.tld文件。(3)在web.xml中增加自定义标签的定义。(4)在jsp中使用自定义标签。2、自定义标签类(1)继承javax.servlet.jsp.tagext.TagSupport(2)标签类属性&a…

Java隐藏代码

不久前,我遇到了字符串中不可见字符的问题。 因为它们是不可见的,所以它们确实会引起混乱。 String a "Hello\u200e";String b "Hello\u200f";System.out.println(\ a " and " b " are length " a.length…

201521123052《Java程序设计》第5周学习总结

1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点。 1.2 可选:使用常规方法总结其他上课内容。 学习了更多markdown的知识 参考资料: 百度脑图 XMind 2. 书面作业 作业参考文件下载 1.代码阅读:Child压缩包内源代码package parent;publi…

Deepin安装Curl的方法

Deepin安装Curl的方法 以Deepin为例,只需一条命令即可: sudo apt-get install curl libcurl3 libcurl3-dev php5-curlposted on 2017-09-15 23:22 MissA-VeryGood 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/MissA-VerGood/p/752911…

亚信联创java面试题_亚信联创面试题及答案

1. Vector & ArrayList1) Vector的方法都是同步的(Synchronized),是线程安全的(thread-safe),而ArrayList的方法不是,由于线程的同步必然要影响性能,因此,ArrayList的性能比Vector好。2) 当Vector或ArrayList中的元素超过它的初始大小时,…

HTTP协议之http状态码详解

什么是HTTP状态码 HTTP状态码的作用是:Web服务器用来告诉客户端,发生了什么事。 状态码位于HTTP Response 的第一行中,会返回一个”三位数字的状态码“和一个“状态消息”。 ”三位数字的状态码“便于程序进行处理, “状态消息”更…

有用的Ant构建标签

问题: 如何在ant文件中执行以下任务? 制作zip文件。 运行命令。 将文件复制到远程计算机。 在远程Linux机器上运行命令。 打开输入框并响应输入值。 拨打蚂蚁电话。 答案: 1.制作zip文件: 以下是在ant中制作zip文件的xml…

poj-2955-Brackets-区间DP

poj-2955-Brackets-区间DP BracketsTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 9014 Accepted: 4829Description We give the following inductive definition of a “regular brackets” sequence: the empty sequence is a regular brackets sequence,if s …

Python调用(运行)外部程序

在Python中可以方便地使用os模块运行其他的脚本或者程序,这样就可以在脚本中直接使用其他脚本,或者程序提供的功能,而不必再次编写实现该功能的代码。为了更好地控制运行的进程,可以使用win32process模块中的函数。如果想进一步控…

Java中已检查和未检查的异常

Java有两种类型的异常-已检查和未检查。 简而言之,选中的是指开发人员可以从异常中合理恢复的情况,而未选中的异常是无法处理的编程错误。 本文介绍了何时使用哪种。 但这不是那么简单–受检查的异常使代码变得“丑陋”。 它们迫使开发人员编写try / cat…