JavaScript中this指向的四种情况具体是哪些?

更新于
2026-10-01 18:47:17
0阅读来源:SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1307个文字,预计阅读时间需要6分钟。

JavaScript中this指向的四种情况具体是哪些?

JavaScript中的this关键字常常让开发者感到困惑,因为它指向的上下文取决于函数或方法被调用的方式。下面通过一个简单的测试题来探讨这个问题。

测试题:

假设以下代码段:

javascriptfunction Person(name) { this.name=name; this.sayName=function() { console.log(this.name); };}

var person1=new Person(Alice);var person2=new Person(Bob);

person1.sayName(); // 输出:Aliceperson2.sayName(); // 输出:Bob

var sayName=person1.sayName;sayName(); // 输出:undefined

请问:`sayName()`函数为什么会输出`undefined`?

答案解析:

当`sayName`被赋值给变量`sayName`时,它变成了一个普通的函数,而不是一个方法。此时,`sayName`函数内部的`this`不再指向`person1`或`person2`,而是指向全局对象(在浏览器中通常是`window`)。由于`sayName`函数内部没有定义`name`变量,所以会输出`undefined`。

阅读全文
标签:4

本文共计1307个文字,预计阅读时间需要6分钟。

JavaScript中this指向的四种情况具体是哪些?

JavaScript中的this关键字常常让开发者感到困惑,因为它指向的上下文取决于函数或方法被调用的方式。下面通过一个简单的测试题来探讨这个问题。

测试题:

假设以下代码段:

javascriptfunction Person(name) { this.name=name; this.sayName=function() { console.log(this.name); };}

var person1=new Person(Alice);var person2=new Person(Bob);

person1.sayName(); // 输出:Aliceperson2.sayName(); // 输出:Bob

var sayName=person1.sayName;sayName(); // 输出:undefined

请问:`sayName()`函数为什么会输出`undefined`?

答案解析:

当`sayName`被赋值给变量`sayName`时,它变成了一个普通的函数,而不是一个方法。此时,`sayName`函数内部的`this`不再指向`person1`或`person2`,而是指向全局对象(在浏览器中通常是`window`)。由于`sayName`函数内部没有定义`name`变量,所以会输出`undefined`。

阅读全文
标签:4