JavaScript之this关键字

对于JavaScript this指针一直模棱两可,查看了ppk谈JavaScript里关于this的一些解释,感觉明白了一些。

 

1. this可以被使用在任何一个函数和方法中,并且它总是引用定义该方法的对象。

例如:

    var test=new Object();

    test.a=3;

    test.b='4';

    test.c=function(){

        alert(this.a*this.b);//提示框输出12

   }

说明:

   方法c是test定义的,因此其中this就是test对象

 

2. 在传统的w3c模型中,JavaScript事件处理程序成为它们所注册到的html元素的方法。

 function test(){

    this.style.backgroundColor='#000';

 }

test();

 此时test函数是JavaScript全局对象——window对象的一个方法。因此this指向window对象,但是没有style属性,将会报错.

 

但如果我们采用事件注册,x.οnclick=test;

则test将成为x的一个方法,因此this=x对象。

 

现在把注册过程稍微改改

 x.οnclick=function(){

   test();

}

此时,x.onclick的对应方法是匿名函数,而test只是被匿名函数所调用,因此test中的this=window

 

因此,如果想使用this关键字,必须确定它确实引用了在其上注册事件处理程序的那个元素

以下三个方法均是正确可行的:

(1) <element οnclick="this.style.backgroundColor='#cc0000'">

(2) x.οnclick=test;

(3)x.addEventListener('click',test,false);

但是x.attachEvent('onclick' test)是不可行的 ,因为微软事件模型缺乏对this关键字的支持。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值