zoukankan      html  css  js  c++  java
  • javascript中this的使用

    终于知道某些大神在写js插件的时候为什么第一句都是"var that=this",来看看下面的这个例子,大家都会懂啦:

    <script type="text/javascript">
        var obj = {
        x : 100,
        y : function(){
            setTimeout(
                function(){ alert(this.x); }    //这里的this指向的是window对象,并不是我们期待的obj,所以会弹出undefined
             , 2000);
        }
    };
    
    obj.y();
    </script>

    我们都知道,不用var修饰的变量就是会被js引擎默认为window的属性,那么函数也是一样的道理,不用function修饰的函数也会被认为是window的方法,所以这里上述代码输出的就是undefined;

    那么再看看下面这段代码:

    <script type="text/javascript">
        var obj = {
        x : 100,
        y : function(){
            var that = this;
            setTimeout(
                function(){ alert(that.x); }
             , 2000);
        }
    };
    
    obj.y();    //弹出100
    </script>

    这里就达到了预想的效果了.原因就是,在调用setTimeout函数之前,我们已经在setTimeout这个作用域链之前将this赋值给that,那么此时的that在obj这个作用域链对象中,自然..that.x打印的就是它自己的属性值100啦

  • 相关阅读:
    C语言I博客作业09
    请看这里
    C++ 面向对象学习笔记[1]
    graphviz的使用
    KDE安装后的一些随笔
    近期内容整理
    链表
    理解C++ lvalue与rvalue
    再看“笕实智慧校园”——作品的复盘[1]
    无题
  • 原文地址:https://www.cnblogs.com/Brose/p/js-this.html
Copyright © 2011-2022 走看看