Por que certas chamadas de função são chamadas de “invocações ilegais” em JavaScript?
Por exemplo, se eu fizer isso:
var q = document.querySelectorAll;
q('body');
Recebo um erro de "Invocação ilegal" no Chrome. Não consigo pensar em nenhuma razão pela qual isso seja necessário. Por um lado, não é o caso de todas as funções de código nativo. Na verdade eu posso fazer isso:
var o = Object; // which is a native code function
var x = new o();
E tudo funciona bem. Em particular, descobri esse problema ao lidar com documentos e consoles. Alguma ideia?