03.11.2014 Views

Introduccion a AJAX - Web de jEsuSdA 8

Introduccion a AJAX - Web de jEsuSdA 8

Introduccion a AJAX - Web de jEsuSdA 8

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Introducción a <strong>AJAX</strong><br />

Capítulo 2. JavaScript básico<br />

En ocasiones, el método toFixed() no funciona como <strong>de</strong>bería, <strong>de</strong>bido a los problemas que<br />

sufren la mayoría <strong>de</strong> lenguajes <strong>de</strong> programación con los números <strong>de</strong>cimales (en realidad, se<br />

<strong>de</strong>nominan "números <strong>de</strong> coma flotante"):<br />

var numero1 = new Number(0.235);<br />

var numero2 = new Number(1.235);<br />

numero3 = numero1.toFixed(2); // numero3 = 0.23<br />

numero3 = numero2.toFixed(2); // numero3 = 1.24<br />

Como se ve en el ejemplo anterior, el redon<strong>de</strong>o <strong>de</strong> los <strong>de</strong>cimales no funciona <strong>de</strong> forma<br />

consistente, ya que el número 5 a veces incrementa el <strong>de</strong>cimal anterior y otras veces no. De la<br />

misma forma, se pue<strong>de</strong>n producir errores <strong>de</strong> precisión en operaciones aparentemente sencillas,<br />

como en la siguiente multiplicación:<br />

var numero1 = new Number(162.295);<br />

var numero2 = numero1 * new Number(100);<br />

// numero2 no es igual a 16229.5<br />

// numero2 = 16229.499999999998<br />

Los errores <strong>de</strong> redon<strong>de</strong>o afectan <strong>de</strong> la misma forma a las variables numéricas creadas con tipos<br />

<strong>de</strong> datos primitivos. En cualquier caso, al igual que suce<strong>de</strong> con Boolean, se recomienda utilizar el<br />

tipo <strong>de</strong> dato primitivo para los números, ya que la clase Number no aporta mejoras significativas.<br />

2.4.2.4. Variables <strong>de</strong> tipo String<br />

La clase String representa una ca<strong>de</strong>na <strong>de</strong> texto, <strong>de</strong> forma similar a los tipos <strong>de</strong> datos primitivos:<br />

var variable1 = new String("hola mundo");<br />

El objeto <strong>de</strong> tipo String es el más complejo <strong>de</strong> JavaScript y contiene <strong>de</strong>cenas <strong>de</strong> métodos y<br />

utilida<strong>de</strong>s, algunos <strong>de</strong> los cuales se verán más a<strong>de</strong>lante. Como ya se ha comentado, siempre que<br />

sea necesario JavaScript convierte <strong>de</strong> forma automática las ca<strong>de</strong>nas <strong>de</strong> texto <strong>de</strong> dato primitivo a<br />

dato <strong>de</strong> referencia. De esta forma, no es obligatorio crear objetos <strong>de</strong> tipo String para acce<strong>de</strong>r a<br />

todas las utilida<strong>de</strong>s disponibles para las ca<strong>de</strong>nas <strong>de</strong> texto.<br />

2.4.2.5. Operador instanceof<br />

El operador typeof no es suficiente para trabajar con tipos <strong>de</strong> referencia, ya que <strong>de</strong>vuelve el<br />

valor object para cualquier objeto in<strong>de</strong>pendientemente <strong>de</strong> su tipo. Por este motivo, JavaScript<br />

<strong>de</strong>fine el operador instanceof para <strong>de</strong>terminar la clase concreta <strong>de</strong> un objeto.<br />

var variable1 = new String("hola mundo");<br />

typeof variable1; // <strong>de</strong>vuelve "object"<br />

instanceof String; // <strong>de</strong>vuelve true<br />

El operador instanceof sólo <strong>de</strong>vuelve como valor true o false. De esta forma, instanceof no<br />

<strong>de</strong>vuelve directamente la clase <strong>de</strong> la que ha instanciado la variable, sino que se <strong>de</strong>be comprobar<br />

cada posible tipo <strong>de</strong> clase individualmente.<br />

www.librosweb.es 20

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!