I have a question about type conversion in JS
{} + 4 // 4
4 + {} // '4[object Object]'
But
4 + new Object() // '4[object Object]'
new Object() + 4 // '[object Object]4'
The language spec says that {} and new Object() declarations are the same, so why does the JS engine behaves this way?