Some syntactic forms allow us to know at compile time if the expression is already an object. I only included array and object literal because the other ones seems less likely. Here is a list of things (might not be complete)

regexp
array comprehension
generator comprehension
function expression
arrow function expression
new expression