this指向
- 1:全局下的this指向window
- 2:函数中的this,谁调用指向谁
- 3:事件处理函数中this谁触发指向谁
- 4:对象中的this默认指向当前对象
- 5:箭头函数中没有this,但是箭头函数中出现this就去父域中找父域this指向谁就指谁
- 6:构造函数中的this指向构造函数的对象
//构造函数中this值得是构造函数本身
function People() {
console.log(this);
this.name = 'Tom';
}
var P = new People();
console.log(P.name);
区分this指向步骤
- 第一步:看this在哪里
- 全局this指向window
- 第二步:区分在什么函数中
- 箭头函数中:this是找上一层作用域的this【自己没有】
- 上层作用域为全局【指向window】
- 上层是【function函数】,按下面步骤走
- function函数:
- 事件处理函数:this指向【触发事件的对象】谁绑定指向谁
- 构造函数:this指向构造函数创建的对象
- 箭头函数中:this是找上一层作用域的this【自己没有】
- 第三步:看是否有bind(),call(),apply()
- 有,使用【谁调用指向谁】
- 无,谁调用指向谁
- 注意:this.xxx = nnn ,是重新复制还是添加属性