js之this,请问你是谁
来源:互联网 发布:mac文件储存位置 编辑:程序博客网 时间:2024/04/30 18:21
在js中this不像其它语言那样容易理解,它有时候指window对象,有时候又是其它对象,那么this,你到底是谁呢?
要分析this就要先理解js中的方法定义,因为this一般都是在方法中使用的,而且方法在js中的地位又很特殊。
在js中定义的方法一定不会单独存在,它必定属于某个对象,所以this就是代表方法属于的那个对象。
1、一般方法
function test() { alert(this==window); } test();
像这种普通的方法定义,方法并没有属于某个对象呀?其实js里有个全局的window对象,没错,这个方法就是定义在window对象下了,所以里面的this肯定就是window。
2、方法,还是方法
function test1(){ function test2(){ alert(this==window) } test2() } test1();
这种情况呢,test2没有明显的属于某个对象,那它就...对,那它就属于window对象,所以里面的this就是指window对象。
3、对象的方法
var o={ test:function(){ alert(this==window); } } o.test();
这种情况就很容易理解了,test方法属于o对象,this当然是指o对象了。
4、再见对象
function Persion () { this.name="mu"; }Persion.prototype.show=function(){ alert(this.name); }var p=new Persion();p.show();
再来看Persion方法,这里的Persion是构造函数,所以this就是指new的时候js创建的匿名对象,这个匿名对象又赋给了p对象,于是this就是指p对象。
5、别忘了事件
var btn=document.getElementById("btn"); btn.onclick=function(){ alert(this); }
onclick方法属于btn对象,所以this指向btn
btn.addEventListener("click",function(){ alert(this); })btn.attachEvent("onclick",function(){ alert(this); });
这里比较特殊了,前者是W3C标准的,this指向btn,后者是ie专有的,this指定window,这里只能死记了。
最后总结一句话:this代表谁,就看方法属于谁,ie事件绑定指window对象!
感谢http://www.cnblogs.com/mu-mu/p/4281934.html
0 0
- js之this,请问你是谁
- this是谁?
- 你是谁?
- this到底是谁
- 你以为你是谁?
- 你以为你是谁?
- 你以为你是谁?
- 请问这到底是谁的错?
- js之this 关键词
- js之this
- js之this
- js之this指针
- JS之prototype this
- js之浅谈this
- 你到底是谁
- 你是谁啊!
- java,你是谁?
- this详解:JAVASCRIPT中的this到底是谁?
- 如何修改python IDLE代码及语法主题 配色——拷贝的是别人喜欢的,来学会调试自己喜欢的颜色吧
- android 顶部Tab实现及原理
- Django学习(一) 安装配置Django
- nyoj 55 (摘果耗费体力最少)(队列问题)
- Gios WORD .NET Library (using RTF specification)
- js之this,请问你是谁
- 黑马程序员——Java基础---多线程
- HDOJ S-Nim 1536&POJ S-Nim 2960【求SG函数+Nim游戏】
- iphone-only apps icon
- 尊贤、谦虚、谨慎、交友、有恒、微渐、慎始终、因果
- 【iOS学习】七、Foundation学习
- Swift学习笔记系列——(12)继承
- 国外整理的一套在线渗透测试资源合集
- SEO基础代码优化