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啦

  • 相关阅读:
    POJ 3667 & HDU 3308 & HDU 3397 线段树的区间合并
    HDU 5992 kd-tree
    BZOJ 4154 kd-tree dfs序 + 二维空间的区间(矩阵)更新单点查找
    BZOJ 4066 kd-tree 矩形询问求和
    BZOJ 1941 kd-tree
    BZOJ 2648 kd-tree模板
    HDU 5925 离散化
    php trait
    php命名空间
    js
  • 原文地址:https://www.cnblogs.com/Brose/p/js-this.html
Copyright © 2011-2022 走看看