а вообще-то есть разница :))
потому что в варианте #3 ты создаешь объект класса Function а не объект класса Object как во вариантах 1 и 2.
ты наверно хотел написать так:

Код:
function cls() {
this._prop1 = 1;
this._prop2 = 2;
}
obj = new cls();
разница в том. что у класса cls может быть какой угодно прототип (в зависимости от того что ты напихал в класс кроме этого и что ты там там наворотил с наследованием). а при создании объекта способами 1 и 2 - они всегда наследуют класс Object.