В большинстве случаев они по существу одинаковы, но вторая версия сохраняет память, потому что для каждого объекта есть только один экземпляр функции, а не отдельная функция для каждого объекта.
Причина использования первой формы является доступ к «частным членам». Например:
var A = function () {
var private_var = ...;
this.x = function () {
return private_var;
};
this.setX = function (new_x) {
private_var = new_x;
};
};
Из-за правил определения javascript private_var доступен функции, назначенной this.x, но не вне объекта.
Вместо использования print(form)
используйте print(form.errors)
.
Удивительно, что в названии вопроса вы правильно упоминали form.errors
.
См. документы относительно Form.errors
.