otros apuntes...
el metodo
calcar no me hace sentido, especialmente cuando se le pasa como parametro las opciones a
FX. ¿calcar no deberia solamente asignar las propiedades faltante? en la linea #13 y #16, fijate que el orden es incorrecto. es decir, primero estas copiando las propiedades del objeto original y luego copias las propiedades del objeto por defecto. en este segundo bucle, las propiedades por defecto sobreescriben al original. deberia ser al reves. el codigo tambien se puede mejorar de otra forma. en lugar de crear un objeto desde cero e ir copiando las propiedades, puedes revisar si algunas de las propiedades esta definida. en caso de no estar definida, la creas.
Código:
Object.prototype.trace = function(_default){
for(var prop in _default) if(!(prop in this)) this[prop] = _default[prop];
}
adicionalmente, los objetos no tiene la propiedad
prototype, este le pertenece a las funciones. por lo que al calcar el objeto estas asignando una propiedad indefinida al objeto original.
por otro lado, en la linea #70 tienes un error de comparacion. los arrays devuelven el string 'object' cuando se utiliza el operador typeof. para determinar si una propiedad es un array debes comparar los constructores.
Código:
var array = [];
console.log(array.constructor === Array);
sin embargo, no comprendo el proposito de esa linea puesto que al evaluarse, se invoca una funcion que no existe en el objeto
Efectos. de igual forma, el
else de la condicion sobre escribe la propiedad
curva del objeto
opc con valor undefined. como resultado, en la linea #57 se intenta invocar
curva como funcion cuando en realidad el valor es
undefined. en fin, probablemente sea porque no has puesto las funciones que has omitido.