【发布时间】:2019-11-23 20:21:36
【问题描述】:
在 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);
我在这里缺少什么?如何将函数转换为某种原始类型?
【问题讨论】:
标签: javascript function type-conversion primitive