Ваше AppError
присвоило экземпляру свойство name
:
this.name = name
Вы ничего не назначаете простой старой Error
. Если вы действительно назначите такое свойство, вы сможете увидеть его:
const err = new Error('errormessage');
err.name = 'someerrorname';
throw err;
приводит к
someerrorname: errormessage
at Object.<anonymous> (D:\Javascript\...\foo.js:1:13)
at Module._compile (internal/modules/cjs/loader.js:956:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:973:10)
at Module.load (internal/modules/cjs/loader.js:812:32)
at Function.Module._load (internal/modules/cjs/loader.js:724:14)
at Function.Module.runMain (internal/modules/cjs/loader.js:1025:10)
at internal/main/run_main_module.js:17:11 {
name: 'someerrorname'
}
(В противном случае, что предшествует :
по умолчанию будет Error
)
То же самое относится и к интерфейсу:
const err = new Error('errormessage');
err.name = 'someerrorname';
throw err;
Uncaught someerrorname: errormessage
(без присвоения err.name
, вместо этого вы получите Uncaught Error
)
Если вы хотите удалить {name: 'name'}
, сделайте свойство не перечисляемым:
Object.defineProperty(this, 'name', { value: name, enumerable: false });
При регистрации объекта перечисляемые свойства будут перечислены на нем.
(Вы можете также опустите enumerable: false
, если хотите, так как по умолчанию оно равно false
)