返回
函数中this指向的问题,理解这一篇就可以啦!!!
前端
2023-12-08 04:49:04
理解函数中this指向的问题
在 JavaScript 中,this
是指向当前执行上下文的引用。在函数中,this
指向调用函数的对象。这对于理解 JavaScript 中的对象和方法的用法非常重要。
普通函数中的this问题
-
结论:
this
永远指向调用函数的对象。 -
直接通过代码进行分析,举例如下:
// 例1代码执行
function Person() {
this.name = "John";
function sayName() {
console.log(this.name);
}
sayName();
}
// 输出结果:undefined
在例1中,我们定义了一个 Person
函数,并在其内部定义了一个 sayName
函数。当我们调用 Person()
函数时,this
指向 Person
函数本身。因此,当我们调用 sayName()
函数时,this
指向 Person
函数,而 this.name
的值为 "John"。
// 例2代码执行
const person = new Person();
person.sayName();
// 输出结果:John
在例2中,我们使用 new
关键字创建了一个 person
对象。当我们调用 person.sayName()
方法时,this
指向 person
对象。因此,this.name
的值为 "John"。
箭头函数中的this问题
-
结论:
this
永远指向箭头函数的父作用域。 -
直接通过代码进行分析,举例如下:
// 例3代码执行
const person = {
name: "John",
sayName: () => {
console.log(this.name);
},
};
person.sayName();
// 输出结果:undefined
在例3中,我们定义了一个 person
对象,并在其内部定义了一个 sayName
箭头函数。当我们调用 person.sayName()
方法时,this
指向 person
对象的父作用域,也就是全局作用域。因此,this.name
的值为 undefined
。
总结
- 在普通函数中,
this
指向调用函数的对象。 - 在箭头函数中,
this
指向箭头函数的父作用域。
理解this指向问题的小技巧
- 记住,
this
永远指向调用函数的对象。 - 如果遇到问题,可以尝试使用
console.log(this)
来查看this
的值。 - 箭头函数的
this
指向其父作用域,而不是函数本身。
希望这篇文章对您理解函数中 this
指向的问题有所帮助。如果您还有任何问题,请随时留言。
SEO优化