带你读《现代Javascript高级教程》三、函数上下文和this关键字(2)

简介: 带你读《现代Javascript高级教程》三、函数上下文和this关键字(2)

带你读《现代Javascript高级教程》三、函数上下文和this关键字(1)https://developer.aliyun.com/article/1349696?groupCode=tech_library


5. 函数调用时使用 call 或 apply

考虑以下脚本:

 

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

 

输出结果:

  • 使用 call:Hello, Alice!
  • 使用 apply:Hello, Alice!

 

解析: 通过使用函数的 call apply 方法,可以显式地指定函数执行时的上下文,即 this 的值。在上述代码中,greet.call(person) greet.apply(person) 中的 this 都被绑定到了 person 对象,所以打印出的结果都是 Hello, Alice!

 

6. 箭头函数的上下文

箭头函数的 this 绑定与常规函数不同,箭头函数没有自己的 this 值,而是捕获了封闭上下文的 this 值。考虑以下脚本:

 

const obj = {
  name: 'Bob',
  greet: function() {
    const arrowFunc = () => {
      return `Hello, ${this.name}!`;
    };
    return arrowFunc();
  }};
console.log(obj.greet());

 

输出结果:Hello, Bob!

 

解析: 在这段代码中,箭头函数 arrowFunc 没有自己的 this 值,而是捕获了封闭上下文 greet 函数中的 this 值,即 obj 对象。所以 this.name 实际上指向 obj.name,打印出 Hello, Bob!

 

这就是 JavaScript 函数上下文和 this 关键字的一些重要概念和用法。

相关文章
|
17天前
|
JavaScript 前端开发
JavaScript 闭包:让你更深入了解函数和作用域
JavaScript 闭包:让你更深入了解函数和作用域
|
2天前
|
JavaScript 前端开发
JavaScript高级四、高阶技巧
JavaScript高级四、高阶技巧
|
3天前
|
JavaScript 前端开发
js中改变this指向、动态指定函数 this 值的方法
js中改变this指向、动态指定函数 this 值的方法
|
9天前
|
JavaScript 前端开发 Java
javascript是弱类型语言,一个函数参数可以接收不同类型的变量作为它的该参数
javascript是弱类型语言,一个函数参数可以接收不同类型的变量作为它的该参数
17 0
|
13天前
|
前端开发 JavaScript
前端 JS 经典:函数管道
前端 JS 经典:函数管道
5 0
|
16天前
|
前端开发 JavaScript
JavaScript新科技:PostCSS的安装和使用,2024年最新2024网易Web前端高级面试题总结
JavaScript新科技:PostCSS的安装和使用,2024年最新2024网易Web前端高级面试题总结
|
16天前
|
前端开发 JavaScript
JavaScript:this-关键字,2024中级前端开发面试解答
JavaScript:this-关键字,2024中级前端开发面试解答
|
16天前
|
前端开发 JavaScript
前端 JS 经典: 富文本高亮关键字
前端 JS 经典: 富文本高亮关键字
14 0
|
16天前
|
JavaScript 前端开发
web前端JS高阶面试题(1),高级开发工程师面试
web前端JS高阶面试题(1),高级开发工程师面试
|
16天前
|
JavaScript 前端开发 网络架构
函数柯里化:JavaScript中的高级技巧
函数柯里化:JavaScript中的高级技巧