JavaScript: объясните return в конструкторе
Для простоты понимания примеры можно сократить до следующих.
Первый: function Test() { this.qqq = a; }
Второй: function Test() { return {qqq: 'a'}; }

Теперь обратимся к спецификации ECMA-262, пункт 13.2.2. [[Construct]]

When the [[Construct]] property for a Function object F is called, the following steps are taken:
1. Create a new native ECMAscript object.
2. Set the [[Class]] property of Result(1) to «Object».
3. Get the value of the prototype property of the F.
4. If Result(3) is an object, set the [[Prototype]] property of Result(1) to Result(3).
5. If Result(3) is not an object, set the [[Prototype]] property of Result(1) to the original Object prototype object as described in 15.2.3.1.
6. Invoke the [[Call]] property of F, providing Result(1) as the this value and providing the argument list passed into [[Construct]] as the argument values.
7. If Type(Result(6)) is Object then return Result(6).
8. Return Result(1).

Разгадка кроется в двух последних строках: если функция возвращает объект, то результатом работы конструктора считается этот объект, если же функция возвращает что-либо другое (либо ничего не возвращает), результатом работы конструктора считается новый объект, созданный на шаге 1.
что за индуиский код? откуда мне знать что именно вам не понятно?

во втором примере используется json