this是指向的哪个全局变量,改变this指向的方法有几种?

简介: this是指向的哪个全局变量,改变this指向的方法有几种?

在JavaScript中,this关键字指向当前执行上下文中的对象。它的具体指向取决于函数的调用方式。


改变this指向的方法有四种:


       1.使用call()方法:call()方法在调用函数时将指定的对象作为参数传递进去,从而改变函数的this指向。用法示例:


f

function greet() {
  console.log(`Hello, ${this.name}!`);
}
 
const person = {
  name: 'Alice'
};
 
greet.call(person); // 输出:Hello, Alice!

 2.使用apply()方法:apply()方法与call()类似,但是接受一个参数数组而不是独立的参数列表。用法示例:

function greet() {
  console.log(`Hello, ${this.name}!`);
}
 
const person = {
  name: 'Bob'
};
 
greet.apply(person); // 输出:Hello, Bob!

 3.使用bind()方法:bind()方法会创建一个新函数,并将指定的对象作为新函数的this值。用法示例:

function greet() {
  console.log(`Hello, ${this.name}!`);
}
 
const person = {
  name: 'Carol'
};
 
const greetPerson = greet.bind(person);
greetPerson(); // 输出:Hello, Carol!

 4.使用箭头函数:箭头函数没有自己的this值,而是继承外部作用域的this值。用法示例:

const person = {
  name: 'Dave',
  greet: () => {
    console.log(`Hello, ${this.name}!`);
  }
};
 
person.greet(); // 输出:Hello, undefined!

这些方法可以根据需要灵活地改变函数中的this指向,以便在不同的上下文中使用相同的函数。

相关文章
|
19天前
|
存储 安全 C语言
引用指针
引用指针
16 1
|
19天前
|
存储 安全 C++
在C++指针和引用
在C++指针和引用
|
19天前
|
JavaScript 前端开发
this是指向的哪个全局变量,改变this指向的方法有几种?
this是指向的哪个全局变量,改变this指向的方法有几种?
|
1天前
|
C++ 存储 Java
C++ 引用和指针:内存地址、创建方法及应用解析
'markdown'C++ 中的引用是现有变量的别名,用 `&` 创建。例如:`string &meal = food;`。指针通过 `&` 获取变量内存地址,用 `*` 创建。指针变量存储地址,如 `string *ptr = &food;`。引用不可为空且不可变,指针可为空且可变,适用于动态内存和复杂数据结构。两者在函数参数传递和效率提升方面各有优势。 ```
|
13天前
|
存储 安全 编译器
你了解引用和指针的区别吗?
你了解引用和指针的区别吗?
|
19天前
|
JavaScript 前端开发
this是指向的哪个全局变量,改变this指向的方法有几种
this是指向的哪个全局变量,改变this指向的方法有几种
8 0
|
18天前
|
存储
引用和指针的区别
引用和指针的区别
17 3
|
19天前
|
JavaScript 前端开发
js中this是指向的哪个全局变量,改变this指向的方法有什么
js中this是指向的哪个全局变量,改变this指向的方法有什么
22 0
|
10月前
|
编译器 C++
C++使用new来初始化指向类的指针
C++使用new来初始化类的指针 1.ClassName * p = new ClassName; 调用默认构造函数。 如果类里没有写默认构造函数,会使用编译器帮我们生成的,但不会初始化成员变量,如 class NoConstructor    //没写构造函数的类 { public:     ~NoConstructor() {}     void printVal()      {          cout << m_val << endl;      } private:     int m_val; }; NoConstructor* p1 = new NoConstruct
56 0
|
11月前
改变this指向的三种方式
改变this指向的三种方式
73 0