发表于: 2019-06-06 21:33:29

1 857


今天完成的事情:

1.继续学习JavaScript高级程序设计

2.继续学习jquery

3.继续js任务2,3,4

明天计划的事情:

1.继续学习JavaScript高级程序设计

2.继续学习jquery

3.继续js任务2,3,4

遇到的问题:

暂无

收获:

1.js中this的指向

this是JavaScript语言中定义的众多关键字之一,它的特殊在于它自动定义于每一个函数域内在函数运行时,this会自动生成一个内部对象,这个对象只能在函数内部使用。同时,随着函数使用场合的不同,this的值会发生变化。

      但是有一个总的原则,那就是this指的是,调用函数的那个对象。

      它是一个很特别的关键字,被自动定义在所有函数的作用域中

      在JavaScript中,this是动态绑定的,它可以是全局对象、当前对象或者任意对象,这完全取决于函数的调用方式。 这就导致了this具备了多重含义,可以使得JavaScript更灵活的使用。

                        function a(){

                        var user = "追梦子";

                        console.log(this.user); //undefined

                        console.log(this); //Window

                        }

                        a();

                  

                    因为this最终指向的是调用它的对象,而上面这个this是在全局环境下,所以是window调用的,因为这个user是局部变量,所以打印this的时候会出现未定义的情况,打印this的时候他会指向window

              

                        var o = {

                        user:"追梦子",

                        fn:function(){

                        console.log(this.user);  //追梦子

                          }

                        }

                        o.fn();

                    

                    这里的this指向的是对象o,因为你调用这个fn是通过o.fn()执行的,那自然指向就是对象o,这里再次强调一点,this的指向在函数创建的时候是决定不了的,在调用的时候才能决定,谁调用的就指向谁,一定要搞清楚这个。

              

                        var o = {

                               a:10,

                         b:{

                               a:12,

                               fn:function(){

                               console.log(this.a); //12

                               }

                            }

                        }

                        o.b.fn();

                 

                    这里同样也是对象o点出来的,但是同样this并没有执行它,因为这个函数中包含多个对象,尽管这个函数是被最外层的对象所调用,this指向的也只是它上一级的对象</p>

             

                    通过上面三个例子,我们可以得出这三个结论

                 

                        情况1:如果一个函数中有this,但是它没有被上一级的对象所调用,那么this指向的就是window,这里需要说明的是在js的严格版中this指向的不是window,但是我们这里不探讨严格版的问题,你想了解可以自行上网查找。

                  

                    情况2:如果一个函数中有this,这个函数有被上一级的对象所调用,那么this指向的就是上一级的对象。

                  

                        情况3:如果一个函数中有this,这个函数中包含多个对象,尽管这个函数是被最外层的对象所调用,this指向的也只是它上一级的对象



返回列表 返回列表
评论

    分享到