gpt4 book ai didi

Javascript [Symbol.toPrimitive](hint) 转换函数

转载 作者:行者123 更新时间:2023-11-29 18:40:51 24 4
gpt4 key购买 nike

在JS中函数属于对象类型。可以使用 [Symbol.toPrimitive](hint) 将对象转换为基本类型。这种纯对象转换工作正常:

let obj = {
[Symbol.toPrimitive](hint) {
switch(hint) {
case "string": return "all right";
case "number": return 100;
default: return "something else";
}
}
};

alert(obj); // all right
alert(+obj); // 100

但是,函数转换有些问题:

function fun() {
[Symbol.toPrimitive](hint) { // JS engine starts to complain here
switch(hint) {
case "string": return "all right";
case "number": return 100;
default: return "something else";
}
}
}

alert(fun);
alert(+fun);

我在这里错过了什么?如何将函数转换为某种原始类型?

最佳答案

您需要处理函数的 Symbol.toPrimitive 属性并分配一个函数。

否则,您将使用一个带有符号的数组并尝试用它调用一个不存在的函数。

function fun() {
}

fun[Symbol.toPrimitive] = function (hint) {
switch(hint) {
case "string": return "all right";
case "number": return 100;
default: return "something else";
}
};

console.log(fun);
console.log(+fun);

关于Javascript [Symbol.toPrimitive](hint) 转换函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57034527/

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