• this指向问题,只提供案例,不做任何分析


    希望大家在测试的道路上找到答案,阔步前行

    <script type="text/javascript">
                /*this指向
                
                console.log(this);
                 
                function fn(){
                    console.log(this);
                }
                fn();
                
                function Foo(){
                    this.name="jhon";
                    this.age=20;
                    console.log(this);
                }
                var f1=new Foo();
                
                function Foo(){
                    this.name="jhon";
                    this.age=20;
                    console.log(this);
                }
                Foo();
                
                var obj={
                    x:10,
                    fn:function(){
                        console.log(this);
                        console.log(this.x)
                    }
                }
                obj.fn();
                
                var obj={
                    x:10,
                    fn:function(){
                        function f(){
                            console.log(this);
                            console.log(this.x)
                        }
                        f();
                    }
                }
                obj.fn()
                
                var obj={
                    x:10,
                    fn:function(){
                        console.log(this);
                        console.log(this.x)
                    }
                }
                var fn1=obj.fn;
                fn1();
                
                var obj={
                    x:10
                }
                var fn=function(){
                    console.log(this);
                    console.log(this.x);
                }
                fn.call(obj);
                
                function Foo(){
                    this.name="jhon";
                    this.age=20;
                }
                Foo.prototype.getName=function(){
                    console.log(this,this.name);
                }
                var foo=new Foo();
                foo.getName();*/
                
            </script>

      

    1.谁最终调用函数,this指向谁。


      ①this指向的永远只可能是对象!!!


      ②this指向谁永远不取决于this写在哪,而是取决于函数在哪调用


      ③this指向的对象,称之为函数的上下文context,也叫函数的调用者

    2.this指向的规律(与函数调用的方式息息相关):


      this指向的情况,取决于函数调用方式有哪些,


      ①通过函数名()直接调用:this指向window


      ②通过对象.函数名()调用的:this指向这个对象


      ③函数通过数组的一个元素,通过数组下标调用的,this指向这个数组


      ④函数作为window内置函数的回调函数调用时,this指向window如setTimeout setInterval 等


      ⑤函数作为构造函数用new关键字调用时,this指向新new出的对象。

    如果您实在不愿意自行分析理解,或者基础较为薄弱无力进行分析:请移步

      王福朋-博客园

    吴建锐-博客园

  • 相关阅读:
    大数的四则运算
    整数划分问题(递归法)
    浅谈C++中内存分配、函数调用和返回值问题
    栈的模拟运用 SOJ3897 dance2
    C/C++:sizeof('a')的值为什么不一样?
    浅谈C++中指针和引用的区别
    n!的分解 soj 2666
    char *a 和char a[] 的区别(指针和数组的区别)
    错排公式的推导
    浅谈C语言中的指针
  • 原文地址:https://www.cnblogs.com/gitByLegend/p/10462175.html
Copyright © 2020-2023  润新知