此嵌套函数中 "this" 关键字的意义是什么

What's the significance of the "this" keyword in this nested function

此函数计算 JavaScript 中的 f(g(...arg))

function compose(f,g){
   return function(...arg){
       return f.call(this, g.apply(this, args)};
   }
}

我知道方法 callapply 的第一个参数是调用上下文。但是,我不确定 this 关键字在上述 callapply 方法中的意义是什么。当调用上下文是像 {x:1} 这样的对象时,我更清楚,然后我们可以使用 this.x 来访问 属性 x,但我不清楚在上述上下文中使用 this。为什么我们在上面的代码中使用 this

编辑:使用这些函数调用函数:

const sum = (x, y) => x + y;
const square = x => x * x;
compose(square, sum)(2, 3);

这是因为我们要保留this的原始调用值,并将其转发给所有组合函数。

如果我们将不使用 this 的函数组合在一起,这并不重要,就像您的示例一样:

const sum = (x, y) => x + y;
const square = x => x * x;
compose(square, sum)(2, 3);

在这里,this是无关紧要的。

但是,组合是通用的,应该适用于任何一对函数。我们可以使用this,在这种情况下最好保留它们的工作方式以备不时之需:

function compose(f, g){
   return function(...args){
       return f.call(this, g.apply(this, args));
   }
}

function introduce(greeting) {
  return `${greeting}! My name is ${this.name}.`;
}

function addRandomFact(str) {
  return `${str} I like ${this.hobby}.`;
}

const person1 = {
  name: "Alice",
  hobby: "pancakes",
  introduce: introduce,
}

console.log(person1.introduce("Hello"));

const person2 = {
  name: "Bob",
  hobby: "turtles",
  introduce: compose(addRandomFact, introduce)
}

console.log(person2.introduce("Hola"));