this指向

this指向的情况,取决于函数调用的方式有哪些:
1、通过函数名()直接调用的:this指向window
2、通过对象.函数名()调用的:this指向这个对象;
3、函数作为数组的一个元素,通过数组下标调用的:this指向这个数组
4、函数作为window内置函数的回调函数调用时:this指向window
例:setTimeout(func,1000);setInterval等

5、函数作为构造函数,用new关键字调用时:this指向的是new出的新对象

 

例:function f1(){
            var tmp = 1;
            this.x = 3;
            console.log(tmp); //A
            console.log(this.x); //B
        }
            var obj = new f1(); //1
            console.log(obj.x) //2
            console.log(f1()); //3

 

这道题让我重新认识了对象和函数,首先看代码(1),这里实例话化了 f1 这 个类。相当于执行了 f1 函数。所以这个时候 A 会输出 1, 而 B 这个时候的 thi s 代表的是 实例化的当前对象 obj B 输出 3.。 代码(2)毋庸置疑会输出 3, 重点 代码(3)首先这里将不再是一个类,它只是一个函数。那么 A 输出 1, B 呢? 这里的 this 代表的其实就是 window 对象,那么 this.x 就是一个全局变量 相当于 在外部 的一个全局变量。所以 B 输出 3。最后代码由于 f 没有返回值那么一个函数 如果没返回值的话,将会返回 underfined ,所以答案就是 : 1, 3, 3, 1, 3, underfined 。

posted @ 2019-04-25 20:59  小灰羊  阅读(118)  评论(0编辑  收藏  举报