箭头函数中的this是在定义函数的时候绑定的,而不是在执行函数的时候绑定的
this的指向:
在面向对象的语言中:
this表示当前对象的引用
js中:
1.单独使用: this表示全局对象 2.方法中: this表示该方法所属的对象
3.函数中:在严格模式中,this指向undefined;在非严格模式中,this指向window
函数中作为对象的方法被调用的时候,谁调用函数就指向谁
4.事件中: this表示接受事件的元素
5.类似call() / apply() / bind() 可以将this引到任何对象
6.有new关键字,this指向new关键字
箭头函数和普通函数的区别 => this的指向不同
箭头函数中的this是在定义函数的时候绑定的,而不是在执行函数的时候绑定的
箭头函数中,this指向的固定化,并不是因为箭头函数内部有绑定this的机制,实际原因是箭头函数根本没有自己的this,导致内部的this就是外层代码块的this,正是因为它没有this,所以也就不能使用构造函数
箭头函数和普通函数的区别:this指向不同
普通函数: 谁调用函数this就指向谁
箭头函数:在哪里定义的函数,this指向谁
var x = 1;
var obj = {
x = 2;
say = ()=>{
console.log(this.x) //
输出1,箭头函数的this就是外部obj的this,外部obj的this指向window,window.x = 1
}
}
判断this指向技巧
在函数直接调用
函数中作为对象的方法被调用
面试题及技巧
=>
严格模式:
变量必须先声明后使用 ; 函数的参数不能有同名属性 ;
不能使用with语句 ; 禁止this指向全局对象