Если все же надо включать строки/числа/булевы-объекты (что крайне странно: они не ведут себя как примитивы), то можно так:
function isPrimitiveLike(value) {
return value === null || value === undefined || [Boolean, Number, Symbol, String].indexOf(value.constructor) != -1;
}