I'll try to answer your two questions.
Whenever in doubt, consult the framework documentation. You said the following "what I could not really understand was cp.call" here is the link to the entire description of what the call method does link .
As for the doubt " What kind of var cp "
In javascript (as has been said) there are only a few reserved types. It is very different from compiled languages like C #, Java and etc.
Then the varcp type would be " object ", make a simple test to prove this.
function Carro() {
var teste = "";
}
var meucarro = new Carro();
console.log(typeof meucarro);
The answer will be "object" and not Car (as it would be in many languages like java and C # for example).
But inside the variable meucarro there is an instance of Car. In other words, the variable meucarro has the same behaviors of Car, being possible to make use of all its methods and operations.
I hope I have helped you.