javaScript之this的五种情况
this一直是JavaScript研究的难题,特别是在笔试和面试中的各种程序分析问题中,也常常会被问到。下面来看一看this被运用的五中情况:
(1) 纯粹的函数调用
函数最普通用法,此时属于全局调用,函数内this指向全局对象window。
示例一:
var x=20;
function test(){
var x = 10;
console.log(this.x)
}
输出:20,因为函数test执行环境为window。
示例2:
var x=20;
function test(){
this. x = 10;
console.log(this.x)
}
test()
console.log(x);
输出:
10
10
由于test函数内部this指向window,所以第3行代码修改了x的值。
(2) 作为对象的方法使用
函数作为某个对象的方法,此事this指向该对象。
function text(){
console.log(this.x)
}
var obj = {};
obj.x = 10;
obj.out = text;
obj.out()
输出: 10
(3) 构造函数生成实例对象
作为构造函数使用时,this指向该对象新创建的实例。
var x = 2;
function text(){
this.x =1;
}
var inst = new text();
console.log(inst.x);
输出: 1
(4) 使用apply
apply()方法是改变函数内部this的值,若为空默认是指向全局对象window。
var x = 2;
function test(){
console.log (this.x);
}
var obj={};
obj.x = 1;
obj.m = test;
obj.m.apply();
obj.m .apply (obj);
输出:
2
1
第8行代码将函数内部的this指向window,故输出为2。第9行代码等价于obj.m()。因为作为对象方法的函数其内部this就指向该对象。
(5)事件处理程序中的this
在DOM级事件处理程序中this指向触发事件的元素,而对于IE事件来说,this指向全局对象window。
HTML:
<input id="myinput" type="text" value="javascript中onclick中的this" onclick=" test(this);"/>
javaScript:
function test(obj){
alert(obj); //[object HTMLInputElement]
alert(obj.id); //myinput
alert(obj.value); //javascript中onclick中的this
}
还有闭包中的this是指向window的,掌握以上几种运用方法,相信你可以所向睥睨。
javaScript之this的五种情况的更多相关文章
- Javascript判断数据类型的五种方式及其特殊性
Javascript判断数据类型的五种方式及区别 @ 目录 typeof instanceof Object.prototype.toString isArray iisNaN ----------- ...
- 五种情况下会刷新控件状态(刷新所有子FWinControls的显示)——从DFM读取数据时、新增加子控件时、重新创建当前控件的句柄时、设置父控件时、显示状态被改变时
五种情况下会刷新控件状态(刷新控件状态才能刷新所有子FWinControls的显示): 在TWinControls.PaintControls中,对所有FWinControls只是重绘了边框,而没有整 ...
- hdu 5060 五种情况求圆柱体与球体交
http://acm.hdu.edu.cn/showproblem.php?pid=5060 官方题解http://bestcoder.hdu.edu.cn/给复杂了 实际上用圆柱体与球体体积差的积分 ...
- css3动画贝塞尔曲线cubic-bezier,css3动画的五种情况
当大家开始做css3动画的时候,了解贝塞尔曲线就成了不可或缺的.“贝赛尔曲线”是由法国数学家Pierre Bézier所发明,由此为计算机矢量图形学奠定了基础.它的主要意义在于无论是直线或曲线都能在数 ...
- 五种情况会导致Session 丢失
1.Session到期自定丢失.2.当修改web.config 系统会重启 SESSION 会丢失.3.Bin目录有变化时候系统会重启 SESSION会丢失 (这里变化指的是,创建新文件.修改文件名 ...
- 探究JavaScript中的五种事件处理程序
探究JavaScript中的五种事件处理程序 我们知道JavaScript与HTML之间的交互是通过事件实现的.事件最早是在IE3和Netscape Navigator 2中出现的,当时是作为分担服务 ...
- 从零开始学习前端JAVASCRIPT — JavaScript中this指向的四种情况
JavaScript中this的四种情况(非严格模式) 1.当this所在函数是事件处理函数时,this指向事件源.2.当this所在函数是构造函数时,this指向new出来的对象.3.this所在函 ...
- this的五种指法
this 到底指向哪里 以下如果没提及,则为严格模式. js中作用域有两种: 词法作用域 动态作用域 词法作用域 词法作用域指在书写代码时就被确定的作用域.看如下代码 var value = 1; f ...
- JavaScript常见的五种数组去重的方式
▓▓▓▓▓▓ 大致介绍 JavaScript的数组去重问题在许多面试中都会遇到,现在做个总结 先来建立一个数组 var arr = [1,2,3,3,2,'我','我',34,'我的',NaN,NaN ...
随机推荐
- HTML5离线存储和本地缓存
一.离线存储 有一个web应用有三个文件index.html,a.js,b.css,现在需要把js和css文件缓存起来 1.在index.html里加上<html manifest=" ...
- SpringBoot学习笔记(4):与前端交互的日期格式
SpringBoot学习笔记(4):与前端交互的日期格式 后端模型Date字段解析String 我们从前端传回来表单的数据,当涉及时间.日期等值时,后端的模型需将其转换为对应的Date类型等. 我们可 ...
- html ---- web sql 例子
<!doctype html> <html> <head> <meta charset="utf-8"> <script> ...
- socket编程详解
http://www.cnblogs.com/skynet/archive/2010/12/12/1903949.html http://blog.csdn.net/hguisu/article/de ...
- window.location.assign和window.location.href区别
window.location.assign和window.location.href区别 window.location.assign(url)和window.location.href=url实现 ...
- [原创]java WEB学习笔记14:JSP的9 个隐含对象 及 JSP 的基本语法
本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...
- python中filter()函数
filter()函数是 Python 内置的另一个有用的高阶函数,filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filt ...
- poj piggy-bank
Piggy-Bank Time Limit: 1000MS Memory Limit: 10000K Total Subm ...
- FOJ 2213 简单几何
题意:给你两个圆的圆心坐标和半径,判断两个圆公切线数目. 思路:考虑两个圆间公切线的情况,两个圆的位置关系分为相离,相交,外切,内切,内含,重合,公切线数分别为4,2,3,1,0,-1. #inclu ...
- IDEA 安装完码云插件,运行报“Cannot run program "xxx":CreateProcess error=2,系统找不到指定的文件”
错误:Cannot run program "E:\Program Files\Git\bin\git.exe":CreateProcess error=2,系统找不到指定的文件 ...