博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Javascript的this用法
阅读量:6426 次
发布时间:2019-06-23

本文共 1414 字,大约阅读时间需要 4 分钟。

this是Javascript语言的一个关键字。

它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用。比如,

function test(){  this.x = 1;}

随着函数使用场合的不同,this的值会发生变化。但是有一个总的原则,那就是this指的是,调用函数的那个对象。

下面分四种情况,详细讨论this的用法。

情况一:纯粹的函数调用

这是函数的最通常用法,属于全局性调用,因此this就代表全局对象Global。

请看下面这段代码,它的运行结果是1。

function test(){  this.x = 1;  alert(this.x);}test(); // 1

为了证明this就是全局对象,我对代码做一些改变:

var x = 1;function test(){  alert(this.x);}test(); // 1

运行结果还是1。再变一下:

var x = 1;function test(){  this.x = 0;}test();alert(x); //0

情况二:作为对象方法的调用

函数还可以作为某个对象的方法调用,这时this就指这个上级对象。

function test(){  alert(this.x);}var o = {};o.x = 1;o.m = test;o.m(); // 1

情况三: 作为构造函数调用

所谓构造函数,就是通过这个函数生成一个新对象(object)。这时,this就指这个新对象。

function test(){  this.x = 1;}var o = new test();alert(o.x); // 1

运行结果为1。为了表明这时this不是全局对象,我对代码做一些改变:

var x = 2;function test(){  this.x = 1;}var o = new test();alert(x); //2

运行结果为2,表明全局变量x的值根本没变。

情况四: apply调用

apply()是函数对象的一个方法,它的作用是改变函数的调用对象,它的第一个参数就表示改变后的调用这个函数的对象。因此,this指的就是这第一个参数。

//this还可以通过call方法改变(function(){ alert(this); }).call("hello world");
var x = 0;function test(){  alert(this.x);}var o={};o.x = 1;o.m = test;o.m.apply(); //0

apply()的参数为空时,默认调用全局对象。因此,这时的运行结果为0,证明this指的是全局对象。

如果把最后一行代码修改为

o.m.apply(o); //1

运行结果就变成了1,证明了这时this代表的是对象o。

总结:

1.当在全部范围内使用 this,它将会指向全局对象。

2.函数调用时,这里 this 也会指向全局对象。

3.方法调用 test.foo(); 这个例子中,this 指向 test 对象。

4.调用构造函数 new foo(); 如果函数倾向于和 new 关键词一块使用,则我们称这个函数是构造函数。在函数内部,this 指向新创建的对象。

转载于:https://www.cnblogs.com/mrxia/p/4203806.html

你可能感兴趣的文章
IPSEC ××× 的配置实例
查看>>
成人学习国画可能产生哪些错误的思想?
查看>>
百度地图笔记_多边形覆盖物区域加标签
查看>>
cocos2dx内存管理机制
查看>>
C语言中的内存分配
查看>>
Java异常处理-----运行时异常(RuntimeException)
查看>>
7、Libgdx网络操作
查看>>
普通电视串口 安装使用
查看>>
【学习/模板】tarjan割点
查看>>
PHP中常用的魔术方法
查看>>
C#反射----字段
查看>>
C#json操作
查看>>
基于openssl的单向和双向认证
查看>>
SpringMVC-核心配置文件spring-mvc.xml
查看>>
前一天作业讲解、pycharm使用、格式化输出、逻辑运算符
查看>>
Windows 8 系列(六):BackgroundTask 及其引起无法捕获的Crash
查看>>
老王学linux-文件权限
查看>>
IIS服务器 远程发布(Web Deploy)配置 VS2010 开发环境 Windows Server 2008服务器系统...
查看>>
图灵访谈之三:田春谈Lisp
查看>>
Windows 10 聚焦企业:安全程度更高、更新速度更快
查看>>