Buenas,
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 originalfunction 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:
Ver originaloperation{ elue-if } is not allowed operation
pero también ésta:
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!