Estoy trabajando en un código Javascript en el cual necesito validar ciertos objetos comprobando que tengan unas propiedades y sólo esas propiedades concretas. Se trata de estos objetos:
{ 'action': ... }, { 'else': ... }, { 'if': ... }, {'if': ... , 'else': ... }, { 'while': ... }
Para ello tengo un método Compiler.prototype.detectOperation() que lanza una excepción si el objeto no cumple esos requisitos. Sin embargo, cuando el objeto no es válido, a parte de la excepción programada por mi, lanza otra más y no logro saber de donde viene. Aquí dejo el código:
http://jsfiddle.net/dWxjA/
Código Javascript:
Ver original
function Compiler(){} Object.defineProperty( Compiler.prototype, 'options', { value: { 'action':0, 'else':0, 'if':0, 'while':0 } }); Compiler.prototype.detectOperation = function( operation ){ var keys = []; if ( typeof operation === 'function' ) { return 'calculation'; } else if( typeof operation === 'object' ) { keys = Object.keys( operation ); if ( keys.length === 1 ) { if( keys[0] in this.options ) return keys[0]; } else if( keys.length === 2 ) { keys = keys.sort(); if( keys[0] === 'else' && keys[1] === 'if' ) return 'ifelse'; } } var error = 'operation{ ' + keys[0]; for( var i = 1; i < keys.length; ++i ) error += '-' + keys[i]; error += ' } is not allowed operation'; console.log( error ); throw console.error( error ); } var comp = new Compiler(); var op = comp.detectOperation( { 'if': 0, 'elue': 2 } ); console.log( 'eo' ); console.log( op );
Me lanza la excepción que he programado:
Código BASH:
pero también ésta:Ver original
operation{ elue-if } is not allowed operation
Código BASH:
Ver original
Uncaught undefined
No es un error que me impida seguir con lo que estoy haciendo pero me tiene mosca no conseguir saber de donde proviene. A ver si alguien sabe explicármelo.
Un saludo y gracias!