Все объекты true почему это ложь ({}==true)?
Потому что при сравнении объектов и булевых значений последние преобразовываются в числа, а при сравнение объектов и чисел объекты также преобразуются в числа, т.е., в конечном счёте, в данном случае имеет место сравнение NaN и 1.
Подробнее о том, как выполняются сравнения, можете глянуть здесь.
Не происходит каст объекта к булевому типу.если все объекты true, почему это ложь ?
Это можно исправить.var t = {
	 valueOf: function () {
        return true
    }
}

console.log( t == true)