JavaScript的self和this使用小结

JavaScript的self和this使用小结-ued-博客园本文摘自:wwcnblogs/reommmm/archive/2010/01/20/1652469一、self这个非常简单。我们知道,打开任何一个网页,浏览器会首先创建一个窗口,这个窗口就是一个window对象,也是js运行所依附的全局环境对象和全局作用域对象。self指窗口本身,它返回的对象跟window对象是一模一样的。也正因为如此,window对象的常用方法和函数都可以用self代替window。举个例子,常见的写法如“self.close();”,把它放在<a>标记中:“<ahref="javascript:self.close();">关闭窗口</a>”,单击“关闭窗口”链接,当前页面关闭。二、this关键字在讲this之前,看下面的一段代码:代码<body><scripttype="text/javascript">functionthisTest(){this.textValue='this的dom测试';this.element=document.createElement('span');this.element.innerHTML=this.textValue;this.element.style.color="blue";this.element.style.cursor="pointer";this.element.attachEvent('onclick',this.ToString);}thisTest.prototype.RenderDom=function(){---本文来源于网络,仅供参考,勿照抄,如有侵权请联系删除---document.body.appendChild(this.element);}thisTest.prototype.ToString=function(){alert("单击我:"+this.textValue);};vartest=newthisTest();test.RenderDom();//test.ToString();</script></body>本来的目的是想在body中添加一个span元素,对于这个span元素,制定了它的字体颜色,悬浮在它上面的鼠标样式和单击触发事件。问题就出现在它的单击事件上(弹出"单击我:undefined")。也许有人会说你丫傻呀,写这么多sb代码还不就是为了实现下面这个东东吗?<spanstyle='cursor:pointer;color:blue;'onclick="alert(this.innerHTML)">this的dom测试</span>你看多简单直观,而且还不容易出错?!kao,我晕。我正要讲的是您正在使用的this.innerHTML中的this呀。1、this到底指什么?我们熟悉的c#有this关键字,它的主要作用就是指代当前对象实例(参数传递和索引器都要用到this)。在javascript中,this通常指向的是我们正在执行的函数本身,或者是指向该函数所属的对象(运行时)。2、常见使用方式(1)、直接在dom元素中使用<inputid="btnTest"type="button"value="提交"onclick="alert(this.value))"/>分析:对于dom元素的一个onclick(或其他如onblur等)属性,它为所属的html元素所拥有,直接在它触发的函数里写this,this应该指向该html元素。---本文来源于网络,仅供参考,勿照抄,如有侵权请联系删除---(2)、给dom元素注册js函数a、不正确的方式<scripttype="text/javascript">functionthisTest(){alert(this.value);//弹出undefined,this在这里指向??}</script><inputid="btnTest"type="button"value="提交"onclick="thisTest()"/>分析:onclick事件直接调用thisTest函数,程序就会弹出undefined。因为thisTest函数是在window对象中定义的,所以thisTest的拥有者(作用域)是window,thisTest的this也是window。而window是没有value属性的,所以就报错了。b、正确的方式<inputid="btnTest"type="button"value="提交"/><scripttype="text/javascript">functionthisTest(){alert(this.value);}document.getElementById("btnTest").onclick=thisTest;//给button的onclick事件注册一个函数</script>分析:在前面的示例中,thisTest函数定义在全局作用域(这里就是window对象),所以this指代的是当前的window对象。而通过document.getElementById("btnTest").onclick=thisTest;这样的形式,其实是将btnTest的onclick属性设置为thisTest函数的一个副本,在btnTest的onclick属性的函数作用域内,this归btnTest所有,this也就指向了btnTest。其实如果有多个dom元素要注册该事件,我们可以利用不同的dom元素id,用下面的方式实现:---本文来源于网络,仅供参考,勿照抄,如有侵权请联系删除---document.getElementById("domID").onclick=thisTest;//给button的onclick事件注册一个函数。因为多个不同的HTML元...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

笔杆子文秘
机构认证
内容提供者

为您提供优质文档,供您参考!

确认删除?