在平时的开发工作中,我们有时会遇到需要将一个对象转换成基本类型的情况。很多情况下这个过程都是自动完成的,我们不需要手动处理。但是每当遇到这种情况的时候,你是否有思考过其背后的逻辑是怎样的?这篇文章会跟大家一起探讨一下这个问题。
在开始这篇文章之前,大家可以尝试思考一下下面问题的答案,看看自己对这部分知识的掌握程度怎么样。
let a = {
[Symbol.toPrimitive] (hint) {
if (hint === 'number') {
console.log(' >>> a hint number');
return 10;
}
if (hint === 'string') {
console.log(' >>> a hint string');
return '10';
}
console.log(' >>> a hint default');
return 'a';
}
};
let b = {
toString() {
console.log(' >>> b hint string');
return 'b';
},
valueOf() {
console.log(' >>> b hint number');
return 20;
}
};
console.log(+a);
console.log(`${
a}`);
console.log