Javascript 什么';这句话的意义是什么;这";此嵌套函数中的关键字
此函数在JavaScript中计算Javascript 什么';这句话的意义是什么;这";此嵌套函数中的关键字,javascript,function-composition,Javascript,Function Composition,此函数在JavaScript中计算f(g(…arg)) function compose(f,g){ return function(...arg){ return f.call(this, g.apply(this, args)}; } } 我知道方法call和apply的第一个参数是调用上下文。但是,我不确定上述call和apply方法中的this关键字的意义。当调用上下文是像{x:1}这样的对象时,我更清楚,然后我们可以使用this.x访问属性x,但我不清楚在上
f(g(…arg))
function compose(f,g){
return function(...arg){
return f.call(this, g.apply(this, args)};
}
}
我知道方法call
和apply
的第一个参数是调用上下文。但是,我不确定上述call
和apply
方法中的this
关键字的意义。当调用上下文是像{x:1}
这样的对象时,我更清楚,然后我们可以使用this.x
访问属性x
,但我不清楚在上面的上下文中使用this
。为什么我们要像上面的代码那样使用这个
编辑:使用以下函数调用函数:
const sum = (x, y) => x + y;
const square = x => x * x;
compose(square, sum)(2, 3);
这是因为我们希望保留
This
的原始调用值,并将其转发给所有组合函数
如果我们将不使用此的函数组合在一起,这无关紧要,就像您的示例:
const sum = (x, y) => x + y;
const square = x => x * x;
compose(square, sum)(2, 3);
在这里,这个
是不相关的
但是,组合是通用的,应该应用于任何一对函数。我们可以使用这个
,在这种情况下,最好保留它们的工作方式,以防出现问题:
函数组合(f,g){
返回函数(…args){
返回f.call(this,g.apply(this,args));
}
}
功能介绍(问候语){
返回`${greeting}!我的名字是${this.name}。`;
}
函数addRandomFact(str){
返回${str}我喜欢${this.hobby};
}
const person1={
姓名:“爱丽丝”,
爱好:“煎饼”,
介绍:介绍,,
}
console.log(person1.introduct(“Hello”));
const person2={
姓名:“鲍勃”,
爱好:“海龟”,
介绍:撰写(添加事实,介绍)
}
console.log(person2.introduct(“Hola”))
在您的特定情况下,它指的是匿名函数本身。你也可以看看这个问题的答案:@Seblor它不是吗?和往常一样,这取决于它的调用方式。由于匿名函数没有任何属性,如果它是this
的值(正如VLAZ指出的,它不是)。@VLAZ我看不出它如何不能用这个片段引用匿名函数。我真的很想看到一个不属于这种情况的情况。@Seblor这个
几乎从不涉及函数。看看你贴的链接。这取决于函数的调用方式。绝大多数情况下,它类似于obj.foo()
,用this=obj
调用foo
。仅调用foo
不会设置此
上下文(结果在严格模式和非严格模式之间有所不同)。通过.call
/.apply
显式提供此
参数是使其引用函数的唯一方法,但也很少这样做。