const obj = {
valueOf() {
console.log('value');
return false;
},
toString() {
console.log('string');
return false;
},
[Symbol.toPrimitive](hint) {
console.log('hint', hint);
return false;
}
};
console.log(obj ? 'yes' : 'no');
console.log(obj == true ? 'yes' : 'no');
"yes"
"hint", "default"
"no"
А так:
const obj = {
valueOf() {
console.log('value');
return false;
},
toString() {
console.log('string');
return false;
},
};
console.log(obj ? 'yes' : 'no');
console.log(obj == true ? 'yes' : 'no');
"yes"
"value"
"no"
Суть вопроса: что вызывается при
obj ? 'yes' : 'no' и как это у объекта переписать? Нужно при таком вызове у существующего объекта получить false ;)