gpt4 book ai didi

javascript - 是否可以将对象 "into"扩展为函数?

转载 作者:行者123 更新时间:2023-11-28 21:14:04 24 4
gpt4 key购买 nike

我一直觉得很有趣的是,在 JavaScript 中你实际上可以将函数扩展到对象中:

var order = function(x, y) {
return x < y ? [x, y] : [y, x];
};

order.backwards = function(x, y) {
return order(x, y).reverse();
};

我不会说有很多理由这样做(但话又说回来,为什么不呢?);我的问题只是是否可以采取相反的做法。也就是说,我可以有这样的东西:

var order = {
backwards: function(x, y) {
return order(x, y).reverse();
}
};

// Obviously, this is not real; I'm just wondering if there's any way
// to accomplish the same thing.
addFunctionBehavior(order, function(x, y) {
return x < y ? [x, y] : [y, x];
};

最佳答案

你不能。您可以做的就是获取一个对象并返回一个函数。

记住函数是对象,只不过它们继承自 Function.prototype 而不是 Object.prototype

它们还有一个内部 [[Call]] 属性,在调用它们时会调用该属性。您无法扩展对象并为其赋予 [[Call]] 属性。

但是,您可以使用 ES6 proxies 执行非常类似的操作(这是非标准的,并且浏览器支持一般)。

关于javascript - 是否可以将对象 "into"扩展为函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8044812/

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