js中的this关键字详解
2016-01-01 14:22 流浪的诗人 阅读(323) 评论(0) 编辑 收藏 举报它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用。比如,
1 2 3 | function test(){ this .x =1 ; } |
随着函数使用场合的不同,this的值会发生变化。但是有一个总的原则,那就是this指的是,调用函数的那个对象。
下面分四种情况,详细讨论this的用法。
情况一:纯粹的函数调用 :属于全局性调用,因此this就代表全局对象Global。
看下面这段代码,它的运行结果是1。
function test(){ this.x = 1; alert(this.x); } test(); // 1
证明this就是全局对象,我对代码做一些改变:
1 2 3 4 5 | var x = 1; function test(){ alert( this .x); } test(); // 1 |
情况二:作为对象方法的调用
函数还可以作为某个对象的方法调用,这时this就指这个上级对象
1 2 3 4 5 6 7 | function test(){ alert( this .x); } var o = {}; o.x = 1; o.m = test; o.m(); // 1 |
情况三 作为构造函数调用
所谓构造函数,就是通过这个函数生成一个新对象(object)。这时,this就指这个新对象。
1 2 3 4 5 | function test(){ this .x = 1; } var o = new test(); alert(o.x); // 1 |
运行结果为1。为了表明这时this不是全局对象,我对代码做一些改变:
1 2 3 4 5 6 | var x = 2; function test(){ this .x = 1; } var o = new test(); alert(x); //2 |
运行结果为2,表明全局变量x的值根本没变。
情况四 apply调用
apply()是函数对象的一个方法,它的作用是改变函数的调用对象,它的第一个参数就表示改变后的调用这个函数的对象。因此,this指的就是这第一个参数。
1 2 3 4 5 6 7 8 | var x = 0; function test(){ alert( this .x); } var o={}; o.x = 1; o.m = test; o.m.apply(); //0 |
apply()的参数为空时,默认调用全局对象。因此,这时的运行结果为0,证明this指的是全局对象。
如果把最后一行代码修改为
1 | o.m.apply(o); //1 |
运行结果就变成了1,证明了这时this代表的是对象o
javascript中onclick(this)用法介绍
你的关注和支持是对我最大的动力~
书山有路群[一个非常活跃的读书分享群,每周都有新书分享]:452450927
微博:http://weibo.com/u/2241641312
出处:http://www.cnblogs.com/wdlhao/
github:https://github.com/wdlhao
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?