关于this

来源:5-1 JS链式动画

慕粉3498277

2016-07-17 21:12

在视频中实现链式动画时,仍然采用多物体的形式,于是有如下代码:

oli[i].onmouseover=function(){

fnmove(this,'width',200,function(){

fnmove(this,'height',300);});}

发现这样写实现不了链式效果,而改成如下代码则可以;

oli[i].onmouseover=function(){

var othis=this;

fnmove(othis,'width',200,function(){

fnmove(othis,'height',300);});}

所以,想请问this到底应该怎么用?在我的错误的代码中第二个this(即标为斜体的this)指向什么?谢谢!

写回答 关注

1回答

  • LovelyDida
    2016-07-17 21:58:12
    已采纳

    如果当前执行的是一个对象的方法,则执行上下文就是这个方法所附属的对象。

    如果一个方法在执行时没有明确指定附属对象,则这个方法的上下文为全局对象。

    第一个this的对象是oli[i],但是第二个this并没有明确指定附属对象

    就像下面的例子

    2、用DOM方式在事件处理函数中使用this关键字

    <div id="elmtDiv">division element</div> <script language="javascript"> var div = document.getElementById('elmtDiv'); div.attachEvent('onclick', EventHandler); function EventHandler() {    // 在此使用this } </script>

    这时的EventHandler()方法中的this关键字,指示的对象是IE的window对象。这是因为EventHandler只是一个普通的函数,对于attachEvent后,脚本引擎对它的调用和div对象本身没有任何的关系。同时你可以再看看EventHandler的caller属性,它是等于null的。如果我们要在这个方法中获得div对象引用,应该使用:this.event.srcElement。 
    3、用DHTML方式在事件处理函数中使用this关键字

     <div id="elmtDiv">division element</div> <script language="javascript"> var div = document.getElementById('elmtDiv'); div.onclick = function() {    // 在此使用this }; </script>

    这里的this关键字指示的内容是div元素对象实例,在脚本中使用DHTML方式直接为div.onclick赋值一个EventHandler的方法,等于为div对象实例添加一个成员方法。这种方式和第一种方法的区别是,第一种方法是使用HTML方式,而这里是DHTML方式,后者脚本解析引擎不会再生成匿名方法。

    有关this的用法,http://www.studyofnet.com/news/301.html

    慕粉3498...

    还没完全看明白,之后慢慢消化。不过超级感谢你,码这么多字,谢谢!

    2016-07-18 09:57:41

    共 1 条回复 >

JS动画效果

通过本课程JS动画的学习,从简单动画开始,逐步深入各种动画框架封装

113923 学习 · 1443 问题

查看课程

相似问题

关于border

回答 1

关于div

回答 2

关于offsettop

回答 1

关于json

回答 1