js基础_32、this

—-解析器(浏览器)在调用函数每次都会向函数内部传递进一个隐含的参数

这个参数就是this,this指向的是一个对象,这个对象我们称为函数执行的上下文对象,根据函数的调用方式不同,this会指向不同的对象。

1,以函数方式调用时,this永远都是指向window。
2,以方法的形式调用时,this就是调用方法的那个对象。

实例代码:

<script>
        function fun1(){
            console.log(this);
        }
        var obj={
            name:'猪八戒',
            sayname:fun1
        }
        fun1();
        obj.sayname();
</script>

结果如下图:
image

实例:

<script>
        var name='孙悟空';
        function fun1(){
            console.log(this.name);
        }
        var obj={
            name:'猪八戒',
            sayname:fun1
        }
        fun1();//相当于window.fun1();的形式
        obj.sayname();
</script>

结果:
image

以上实例中使用的是同一个方法(函数)对象,只是调用方式不同导致结果不同,本质上都是用的同一个函数对象,代码可证。

  <script>
        var name='孙悟空';
        function fun1(){
            console.log(this.name);
        }
        var obj={
            name:'猪八戒',
            sayname:fun1
        }
        console.log(obj.sayname==fun1);
//        fun1();
//        obj.sayname();
//console.log(obj.sayname());
//console.log(fun1());
</script>

结果,由此可得使用的为同一函数对象:
image

可以使用this表示当前对象,如下代码所示:不同的调用方式输出的结果不同

<script>
            var name='孙悟空';
            function fun1(){
                console.log(this.name);
            }
            var obj1={
                name:'猪八戒',
                sayname:fun1
            }
            var obj2={
                name:'沙和尚',
                sayname:fun1
            }
            fun1();
            obj1.sayname();
            obj2.sayname();
</script>

结果如下:
image

posted @ 2022-03-12 08:52  青仙  阅读(33)  评论(0编辑  收藏  举报