Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/10/2014, 00:31
Pantaláimon
 
Fecha de Ingreso: julio-2006
Ubicación: Barcelona
Mensajes: 244
Antigüedad: 17 años, 9 meses
Puntos: 32
Comportamiento extraño extendiendo Error.

Buenas.

He hecho este código de prueba en javascript para averiguar por qué no persiste el campo message cuando extiendo la 'clase' Error.
Código javascript:
Ver original
  1. function A(message) {
  2.     this.message = message
  3. }
  4.  
  5. function B(message) {
  6.     A.call(this, message)
  7. }
  8.  
  9. B.prototype = Object.create(A.prototype)
  10. B.prototype.constructor = B
  11.  
  12. function ValidationError(message) {
  13.     Error.call(this, message)
  14. }
  15.  
  16. ValidationError.prototype = Object.create(Error.prototype)
  17. ValidationError.prototype.constructor = ValidationError
  18.  
  19. var a = new A('bla')
  20. var b = new B('ble')
  21. var e = new Error('bli')
  22. var ve = new ValidationError('blo')
  23.  
  24. var text = a.message + ' ' + b.message + ' ' + e.message + ' ' + ve.message
  25.  
  26. alert(text)
La respuesta a la salida es "bla ble bli "
http://jsfiddle.net/jjjvpr04/1/

Si no queda más remedio lo haré al estilo que dice MDN:
Código javascript:
Ver original
  1. function MyError(message) {
  2.   this.name = 'MyError';
  3.   this.message = message || 'Default Message';
  4. }
  5. MyError.prototype = new Error();
  6. MyError.prototype.constructor = MyError;

Pero me parece un comportamiento extraño y no sé si estoy perdiéndome algo que aún no he acabado de comprender bien.

Un saludo!
__________________
github.com/xgbuils | npm/xgbuils

Última edición por Pantaláimon; 09/10/2014 a las 00:42