js this指向问题
- js this 指向问题
this位置 | 指向 |
---|---|
全局作用域下 | 指向window |
函数内 | 函数普通调用时,this指向window |
函数内 | xxx.函数名() this指向xxx |
箭头函数内 | 指向上级作用域的this,如果没有,继续向上查找 |
<script>
//this 指向
//this 执行上下文
//根据执行环境的不同,this指向不同的对象
//1.在全局作用域下,this指向window
//2.在函数内,根据函数的调用方式不同,this 的指向也不同
//2.1 函数的调用方法为普通调用时,this指向window。
//例如
var a = 10;
function num() {
console.log(this.a);//this指向window //10
}
num();
//2.2 函数以对象的方式调用时,xxx.fun();this的指向为xxx
let p = {
age: 18,
fun: function () {
console.log(this.age) //18
}
}
p.fun()
//2.3每个函数都有自己的this,除了箭头函数。一旦箭头函数中出现了this 会向上层作用域查找this
var p2 = {
familyName: 'huang',
givenName: 'xiaoming',
sayHello: function () {
//此处,this指向p2
let fullName = () => {
//箭头函数没有自己的this,会像上层找
var full = `${this.familyName} ${this.givenName}` //所以这里的this为 p2
return full;
}
console.log(`你好,我叫${fullName()}`) //这里调用函数fullName 这里的this指向p2
}
}
p2.sayHello()//this指向p2
</script>