gpt4 book ai didi

javascript - 将对象作为函数调用 JavaScript

转载 作者:行者123 更新时间:2023-12-04 10:06:41 26 4
gpt4 key购买 nike

在 JavaScript 中,函数是对象,除了它们可以被调用和执行,这相当于重载 ()其他语言中对象的运算符。

我可以将此功能应用于任何对象吗?

我知道没有像 [Symbol.call] 这样的属性或类似的东西。如果有类似的东西,如果你能告诉我它是什么,我将不胜感激。

如果声明对象并为它们分配属性是我唯一的选择,那没关系,但我更喜欢这是否可以使用类来完成,例如 C++。

我可以做这样的事情

function func(...) {
...
}

func.foo = x,
func.bar = y;

但如果我能做一些更像这样的事情会更可取

const func = {

[`()`]: function(...) {
...
},
foo: x,
bar: y
};

最佳答案

Can I apply this functionality to any object?“



不可以。从 ECMAScript 第 10 版(2019 年)开始,这是不可能的。
() -operator/expression 构造只能用于函数对象。

这是因为它使用了 [[Call]]内部方法。栏目 7.3.12 Call表明这只是为函数对象定义的,规范没有规定添加 [[Call]]其他对象的内部方法。

7.3.12 Call ( F, V [ , argumentsList ] )

The abstract operation Call is used to call the [[Call]] internal method of a function object. [..]



该规范的编写方式使得 future 的修订版可能会增加通用支持。

无论如何,如问题所示,函数对象可以作为代理进行变异:所以继续,根据需要进行调味。

关于javascript - 将对象作为函数调用 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61553824/

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