Приведение string
может быть перезаписано с помощью функции toString
.
Приведение number
может быть перезаписано с помощью функции valueOf
.
Приведение boolean
можно также перезаписать с помощью функции valueOf
.
var foo = {
toString: function() {
console.log("To String");
return "bar";
},
valueOf: function() {
console.log("Value Of");
return 5;
}
};
console.log(`${foo}`);
console.log(+foo);
console.log(foo == true);
console.log(!!foo);
Мне не удалось найти функцию, которая вызывается, когда объект должен быть преобразован в truthy
.Поскольку x == true
и !!x
ведут себя по-разному, то я предполагаю, что не существует функции, которая это меняет.Вместо этого я попытался расширить типы, у которых truthy
равно false
, но единственное значение, которое принимается Object.create
, это null
, который почти идентичен литералу объекта (не имеет ни одного из свойств Object.prototype
).