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来执行构造函数,构造函数自身也是可以独自执行的,但是不能返回实例化对象.