js中各种情况下this指向问题总结___全面总结(无举例)

1.this指向undefined
ES6的严格模式中,如果调用函数中的this 或者 顶层的this (就是最外层的this,相当于script中最近一层的this),将会被指向undefined

2.this指向window
(1)非严格模式中,函数或者顶层中调用this,会被指向window
(2)回调函数中,默认this的指向是window
(3)当时用call,apply,bind时,如果带入的第一个参数时null或undefined时,this会被默认指向window

3.this指向上下文环境中的this
(1)箭头函数
例如:setTimeout要用箭头函数,才能指向它外层的this,否则就指向window
事件回调函数也是
(2)对象的属性中this也是上下文环境中this的指向
加上80几

4.this指向函数中的arguments
在函数中,使用回调函数时,利用arguments的参数来执行回调函数,被执行的回调函数中this指向的是当前函数arguments.callee.caller函数的arguments 16:30 加上90几

5.事件中的this指向事件侦听的对象e.currentTarget

6.this被call,apply和bind重新指定对应的对象

7.对象函数中的this指向当前对象

8.ES6类中的this
在实例化方法中或者构造函数中调用的this都是当前类的实例化的对象
静态方法中this是当前类名或者当前类的构造函数
//class Box{ }
//Box是类,也是函数.当直接调用时 console.log(Box),指的是类.
//new Box( ); 执行构造函数 Box就是类里面的constructor
//只有实例化对象才有属性是constructor
//b.constructor === Box

9.ES5 类中的this
在js的ES5 或 ES6 中,类仅允许有且只有一个构造函数,并且该函数的名称和类名, 构造函数和类名是一样的
在ES6中,会将构造函数描述成constructor
在ES5中,会将构造函数写成类名
但是不管是ES5 还是ES6 ,实例化对象的constructor 都是构造函数
构造函数中不允许return.
在ES5中如果不使用new来执行构造函数,构造函数自身也是可以独自执行的,但是不能返回实例化对象.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值