
#2928 (comment)
首先会查找对象是否实现了
[Symbol.toPrimitive]方法。一般来说
[Symbol.toPrimitive]方法决定了valueOf()和toString()的调用顺序,该方法接受一个参数hint,当hint为number时,则调用valueOf()方法;为string时,则调用toString()方法。例:
const obj = { // 默认[Symbol.toPrimitive] 方法,删掉不影响输出结果 [Symbol.toPrimitive](hint) { if(hint === 'number') { return this.valueOf(); } else if (hint === 'string') { return this.toString(); } return true; }, valueOf() { return 42; }, toString() { return 'foo'; }};console.log(obj * 2); // 84console.log(`Hello, ${obj}!`); // "Hello, foo!"
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)