gpt4 book ai didi

JavaScript - 将函数调用应用于具有另一个原型(prototype)的对象

转载 作者:太空宇宙 更新时间:2023-11-04 02:48:35 26 4
gpt4 key购买 nike

我面临的任务(实际上是问题)如下。我有一个数组(我们称之为arr)。数组的第一个元素是函数,其余元素是参数。例如:

arr = [(a, b) => a + b, 5, 7];

因此,我需要使用参数 57 调用函数 (a, b) => a + b。但是,我不想使用 arr[0](...arr.slice(1)),而是想使用 Function.prototype.applyFunction.prototype.call (如果需要,我也可以使用 Function.prototype.bind)。所以基本上,我只能访问 arr 一次,并且不能使用其他变量。另外,我不允许修改 arr 或其属性,或在某处存储任何其他数据(例如作为某些全局对象的属性等)。这可能吗?

我的尝试

我试图弄清楚,这就是我想到的(它不起作用):

Function.prototype.apply.call(this, ...arr);

但是,它会抛出一个错误:

Uncaught TypeError: Function.prototype.apply was called on #Global, which is an object and not a function

问题

正确的做法是什么?

最佳答案

instead I want to do it using Function.prototype.apply and Function.prototype.call. Is that even possible?

当然,但我们必须重复arr:

arr[0].call(...arr)

实例:

const arr = [(a, b) => a + b, 5, 7];
console.log(arr[0].call(...arr));

如果函数需要特定的 this,那么这种方法就行不通,但你的函数不需要,原因有两个,其中任何一个就足够了: 1. 它是一个箭头函数,所以它不关心我们用什么 this 来调用它,它会在创建它的地方结束; 2. 无论如何它都不使用 this

也就是说,最好给自己一个辅助函数来代替它。

关于JavaScript - 将函数调用应用于具有另一个原型(prototype)的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46285359/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com