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 。

转载于:https://www.cnblogs.com/hangzhou728/p/10770932.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值