Tach!
Ob jeder falsy-Wert zu 0 oder '' gewandelt werden soll, ist auch offen. Noch schlimmer: nicht jeder truthy-Wert ist true. Ganz böses Beispiel:
Boolean.prototype.identifyYourself = function(t) { console.log("I am " + (this ? 'true' : 'false')); }; false.identifyYourself(); // I am true
Nicht alles was ein Programmierfehler ist, ist eine gültiger Aussage. So wäre es richtig:
Boolean.prototype.identifyYourself = function() {
console.log("I am " + (this.valueOf() ? 'true' : 'false'));
};
false.identifyYourself();
Wenn an einem primitiven Typ eine Objekt-Methode aufgerufen werden soll, wird der Wert in ein Objekt konvertiert. Objekte sind nie falsy, weswegen der einfache boolsche Test nicht richtig ist. Stattdessen muss man den Wert testen, nicht das Objekt selbst.
dedlfix.