Ao contrario queJava, JavaScript non é unha linguaxeorientada a obxectos propiamente[1], xa que non dispón deherdanza, é máis ben unha linguaxebaseado en prototipos, xa que as novas clases xéranse clonando as clases base (prototipos) e estendendo a súa funcionalidade.[2]
Todos osnavegadores interpretan o código JavaScript integrado dentro das páxinas web. Para interactuar cunha páxina web provese á linguaxe JavaScript dun desenvolvemento doDOM. O seu uso máis estendido atópase en páxinas webHTML para realizar tarefas e operacións no marco da aplicación unicamente cliente, sen acceso a funcións do servidor. JavaScript execútase noaxente de usuario ao mesmo tempo que as sentenzas van descargándose xunto co códigoHTML.
A linguaxe foi inicialmente definida porBrendan Eich na empresaNetscape Communications. Netscape buscaba unha linguaxe interpretada máis lixeira que complementase á linguaxeJava atraendo a programadores non profesionais dunha forma semellante aoMicrosoft Visual Basic.[3]
Inicialmente déuselle o nome deMocha, e posteriormenteLiveScript nas súas primeiras inclusións en versións beta doNetscape Navigator 2.0, en setembro de1995. Foi renomeada coma JavaScript nun anuncio conxunto de Netscape e Sun[4] cando se lanzou na versión 2.0B3 do navegador de Netscape.[5]
O nome final deJavaScript causou confusión dando a impresión de que a linguaxe era derivada deJava, polo que a elección do nome foi caracterizada coma unha manobra de mercadotecnia de Netscape para darlle máis renome grazas á popularidade da outra linguaxe.[6][7]
En1997 os autores propuxeron JavaScript para que fose adoptado como estándar daEuropean Computer Manufacturers Association (ECMA), que a pesar do seu nome non é europea senón internacional, con sede enXenebra. Enxuño de1997 foi adoptado como un estándar ECMA, co nome deECMAScript. En1998 foi a linguaxe foi adaptada áISO/IEC-16262. A última versión do estándarECMAScript é a 5.1, que data do ano2011.[10]
/* Finds the lowest common multiple (LCM) of two numbers */functionLCMCalculator(x,y){// constructor functionvarcheckInt=function(x){// inner functionif(x%1!==0){thrownewTypeError(x+" is not an integer");// throw an exception}returnx;};this.a=checkInt(x)// semicolons ^^^^ are optional, a newline is enoughthis.b=checkInt(y);}// The prototype of object instances created by a constructor is// that constructor's "prototype" property.LCMCalculator.prototype={// object literalconstructor:LCMCalculator,// when reassigning a prototype, set the constructor property appropriatelygcd:function(){// method that calculates the greatest common divisor// Euclidean algorithm:vara=Math.abs(this.a),b=Math.abs(this.b),t;if(a<b){// swap variablest=b;b=a;a=t;}while(b!==0){t=b;b=a%b;a=t;}// Only need to calculate GCD once, so "redefine" this method.// (Actually not redefinition—it's defined on the instance itself,// so that this.gcd refers to this "redefinition" instead of LCMCalculator.prototype.gcd.// Note that this leads to a wrong result if the LCMCalculator object members "a" and/or "b" are altered afterwards.)// Also, 'gcd' === "gcd", this['gcd'] === this.gcdthis['gcd']=function(){returna;};returna;},// Object property names can be specified by strings delimited by double (") or single (') quotes.lcm:function(){// Variable names don't collide with object properties, e.g., |lcm| is not |this.lcm|.// not using |this.a * this.b| to avoid FP precision issuesvarlcm=this.a/this.gcd()*this.b;// Only need to calculate lcm once, so "redefine" this method.this.lcm=function(){returnlcm;};returnlcm;},toString:function(){return"LCMCalculator: a = "+this.a+", b = "+this.b;}};// Define generic output function; this implementation only works for Web browsersfunctionoutput(x){document.body.appendChild(document.createTextNode(x));document.body.appendChild(document.createElement('br'));}// Note: Array's map() and forEach() are defined in JavaScript 1.6.// They are used here to demonstrate JavaScript's inherent functional nature.[[25,55],[21,56],[22,58],[28,56]].map(function(pair){// array literal + mapping functionreturnnewLCMCalculator(pair[0],pair[1]);}).sort(function(a,b){// sort with this comparative functionreturna.lcm()-b.lcm();}).forEach(function(obj){output(obj+", gcd = "+obj.gcd()+", lcm = "+obj.lcm());});
Esta función dará coma resultado nun navegador:
LCMCalculator: a = 28, b = 56, gcd = 28, lcm = 56LCMCalculator: a = 21, b = 56, gcd = 7, lcm = 168LCMCalculator: a = 25, b = 55, gcd = 5, lcm = 275LCMCalculator: a = 22, b = 58, gcd = 2, lcm = 638
O uso máis común do JavaScript é engadir comportamentos do lado do cliente ás páxinasHTML, o que se coñece comaHTML dinámico (DHTML). Osguións inclúense dende as páxinasHTML e interactúan coDOM da páxina.
Debido a que o código do JavaScript pode executarse localmente nonavegador do usuario no canto de facelo nunservidor, o navegador pode responder ás accións do usuario de forma rápida, facendo que as aplicacións teñan un tempo de resposta maior. Ademais, o código JavaScript pode detectar accións de usuario que o HTML non pode por si mesmo. Moitas aplicacións, coma por exemploGmail, aprovéitanse destas funcións, empregando JavaScript na súas lóxicas deinterface de usuario.
↑Severance, Charles (febreiro de 2012)."#".Computer(en inglés)45 (2) (IEEE Computer Society). pp. 7–8.doi:10.1109/MC.2012.57. Consultado o 23 de marzo de 2013.