博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript中的this关键字的深入理解
阅读量:6516 次
发布时间:2019-06-24

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

  • 1.一般用处
  • 2.this.x与apply()、call()
  • 3.无意义(诡异)的this用处
  • 4.事件监听函数中的this
  • 5.总结

在JavaScript中的this变量是一个令人难以摸清的关键字,this可谓是非常强大,充分理解this相关知识有助于我们在编写面向对象的JavaScript程序时能够迎刃有余。

1.一般用处

  对于this变量最重要的是能够理清this所引用的对象到底是哪一个,也许很多资料上都有自己的解释,但有些概念讲的偏复杂。简单的理解:首先分析this所在的函数是当做哪个对象的方法调用的,则该对象就是this所引用的对象

示例一:

View Code
var obj={};obj.x=100;obj.y=function(){   alter(this.x);}obj.y();  //弹出100

这段代码非常容易理解,当执行obj.y()时,函数是作为对象obj的方法调用的,因此函数体内的this指向的是obj对象,所以会弹出100。

示例二

View Code
1 var checkThis=function (){ 2     alter(this.x); 3 }; 4 var x="this is a property of window"; 5 var obj={}; 6 obj.x=100; 7 obj.y=function(){alter(this.x)}; 8 var obj2=obj.y; 9 obj.y();   //弹出10010 checkThis(); //弹出this is a property of window11 obj2();  //弹出this is a property of window

这里为什么会弹出'this is a property of window ',可能让人迷惑。在Javascript的变量作用域里面有一条规则“全局变量是windows对象的属性”。当执行checkThis();就相当于执行windows。checkThis(),所以会弹出'this is a property of window'

2,this,x于apply()、call()

通过call和apply可以从新定义函数的执行环境,即this的指向,着对于一些应用当中是十分常用的。

示例三:

View Code
function changeStyle(type,value){    this.style[type]=value;}var one=document.getElementById('one');changeStyle.call(one,'fontSize','100px');changeStyle(one,'fontSize','100px');//出现错误,因为此时changeStyle中的this引用的是windows对象,而window并无style属性。

注意changeStyle.call() 中有三个参数,第一个参数用于指定该函数将被哪个对象所调用。这里指定了one,也就意味着,changeStyle函数将被one调用,因此函数体内this指向是one对象。而第二个和第三个参数对应的是changeStyle函数里的type和value两个形参。最总我们看到的效果是Dom元素one的字体变成了20px。

示例四apply():

 

 

 

转载于:https://www.cnblogs.com/wazhfq/archive/2012/08/13/2636437.html

你可能感兴趣的文章
说说云计算与移动管理
查看>>
T-Mobile美国使用28GHz频段测试5G
查看>>
如何缓解影子云服务安全风险?
查看>>
Bossies 2016:最佳开源大数据工具
查看>>
银行卡信息安全事件频发 互联网站成数据泄露"重灾区"
查看>>
云服务器 ECS 使用OpenAPI管理ECS:使用OpenAPI弹性创建ECS实例
查看>>
象云2.0产品发布暨国产操作系统首次入驻公有云
查看>>
一个完美DCIM应该具备的功能与价值
查看>>
《SEO的艺术(原书第2版)》——1.5 人们如何搜索
查看>>
经验贴 | 电梯监控的布线技巧
查看>>
唐山联通与丰南区政府签署“智慧城市”战略合作协议
查看>>
研究显示:广告拦截应用正在破坏互联网
查看>>
优云·小课堂 第八期:运维自动化的魅力
查看>>
稳定+性能+价格,阿里云发力ECS企业级产品
查看>>
写个软件来防止服务器网站CPU百分百
查看>>
智能城市里,“公共电话亭”的存在意味着什么?
查看>>
JVM分代垃圾回收策略的基础概念
查看>>
《交互式程序设计 第2版》一3.5 捕获简单用户交互行为
查看>>
安装操作系统需要注意的事项
查看>>
5G技术的5大猜想
查看>>