| CARVIEW |
JavaScript
De Viquipèdia
JavaScript és un llenguatge script basat en el concepte de prototip, implementat originàriament per Netscape Communications Corporation, i que va derivar en l'estandard ECMAScript. És conegut sobretot pel seu ús en pàgines web, però també s'utilitza en altres aplicacions.
Malgrat el seu nom, JavaScript no deriva del llenguatge de programació Java, però tots dos compartixen una sintaxi similar inpirada en el llenguatge C. Semànticament, JavaScript és més pròxim als llenguatges Self i ActionScript (basat també en l'ECMAScript). El nom "JavaScript" és una marca registrada per Sun Microsystems.
Taula de continguts |
[modifica] Història
Al 1995, Brendan Eich va desenvolupar en Netscape Corporation la primera versió d'este llenguatge baix el nom Mocha, renombrat com LiveScript i finalment com Javascript. Aquest últim canvi de nom va coincidir amb la inclusió de la tecnologia Java per part del navegador web Netscape. La primera versió del llenguatge es va presentar en desembre de 1995 a la versió 2.0B3 del navegador Netscape. Microsoft implementà més tard una versió amb el nom JScript, però sovint també se l'anomena Javascript.
En un principi, s'usava a pàgines web HTML, per realitzar feines i operacions al marc de l'aplicació client servidor. Amb l'aparició de la Web 2.0, Javascript s'ha convertit en un veritable llenguatge de programació que aporta la potència de càlcul al navegador per aumentar l'usabilitat d'aplicacions web amb tècniques avançades com AJAX o JCC.
El 1997 els autors van proposar Javascript com estàndard de l' European Computer Manufacturers Association ECMA, que tot i el seu nom no és europeu, sinó internacional, amb la seu a Ginebra. El juny de 1997 va ser adoptat com un estàndard ECMA, amb el nom ECMAScript. Poc després també va ser un estàndard ISO.
JScript és l'implementació del ECMAScript de Microsoft, molt similar al JavaScript de Netscape, però amb certes diferències al model d'objecte del navegador que fan les dues versions incompatibles.
Per evitar aquestes incompatibilitats, el World Wide Web Consortium va dissenyar l'estàndard Document Object Model (DOM, o Model d'Objectes del Document en català), que incorpora el Konqueror, les versions 6 d'Internet Explorer i Netscape Navigator, Opera versió 7, i Mozilla des de la seva primera versió.
[modifica] Programa d'exemple
Aquest programa escriu "Hola món" al dispositiu de sortida per defecte,
document.write('Hola, món!');
o amb una alerta
alert('Hola, món!');
[modifica] Entorn de proves Rhino
Per experimentar fora del navegador podeu descarregar-vos el motor Javascript de Mozilla, En Linux podeu instal·lar el paquet de la distro amb compilador a codi màq.
rhino --help
Altrament el podeu descarregar per a la màquina Virtual Java d'aquí.[1]
Un cop descarregat i desempaquetat, obriu una finestra de comandes, canvieu directori a la carpeta del paquet obert i activeu el Rhino amb
java -jar js.jar
[modifica] Característiques
[modifica] Generals
Les relacions d'herència entre objectes no són per classes i subclasses,
sinó individuals entre un objecte i un altre anomenat prototipus (relacionat mitjançant la propietat prototype), al qual es deleguen les operacions que el primer desconeix (no pròpies o específiques).
- Només es pot establir un prototipus mitjançant una funció constructora.
- Els prototipus poden formar una cadena que ha de ser finita (no hi pot haver cicles).
Vegeu l'exemple més avall a "Creació d'objectes".
[modifica] Sintaxi
[modifica] Comentaris
// comentari fins a fi de línia /* comentari multilinia */
[modifica] Blocs
'{' instrucció ';' instr. '}'
[modifica] Tipus i valors
- Undefined
- Null
null
- Boolean
false, true
Boolean( <variable_de_qualsevol_tipus> ) ; // conversió a booleà de la variable (els
// elem. neutres de la suma o concat. segons el tipus avaluen a fals)
- Number, real de 64 bits (IEEE 754)
0 -1 1.5 -2E-3 NaN +Infinity -Infinity // NaN és Not-a-Number (No-Numèric) com ara 0/0,
// Infinity indica sobreeiximent en el càlcul
Number( <variable_de_qualsevol_tipus> ) ; // conversió a numèric de la variable
- String
"" "abc" 'abc' String( <variable_de_qualsevol_tipus> ) ; // conversió a cadena de caràcters de la variable
- Object
var obj = { propietat1: valor1, propietat2: valor2, ..}
[modifica] Objectes
new és el generador d'objectes, sense new, constructors com ara String() no estan obligats, segons l'estàndard, a generar un objecte, sinó només la conversió al tipus primitiu (escalar).
[modifica] Object
propietats
obj.hasOwnProperty ( 'prop') // l'obj. té la prop. específicament,
// i no per delegació del prototipus
obj.isPrototypeOf ( altre_obj) // és prototipus de
obj.propertyIsEnumerable ( 'prop' ) // sortirà en un 'for(' prop_var 'in' obj ')'
obj.toString()
obj.toLocaleString()
obj.valueOf() // retorna el seu valor this
[modifica] Number
obj = new Number( expr.) Number.MAX_VALUE // 1.7976931348623157 × 10^308 Number.MIN_VALUE // 5 x 10^-324 Number.NaN // valor Not-a-Number: No-Numèric o indefinit, ex.: 0/0 Number.POSITIVE_INFINITY // indica "sobreeiximent en operacions de resultat positiu" Number.NEGATIVE_INFINITY // indica "sobreeiximent en operacions de resultat negatiu"
[modifica] String
var a = new String( "0123") // amb new fem un objecte, podem afegir-li propietats var a = "0123" // valor escalar, no podem afegir-li propietats
mètodes (La majoria de mètodes de String no tornen un objecte String sinó un valor primitiu (escalar) de tipus String)
a.substr (1, 3) == "123" // str.substr( inici, llargada) a.substring (1, 3) == "12" // str.substring( inici, índex_aturador)
[modifica] Funció
var variable_o_propietat = function (param1, param2, ..) { codi }
// o també
function nom_de_funcio (param1, param2, ..) { codi }
[modifica] Array (vectors)
var a = new Array( llargada) var a = [0, 1, 2, 3, 4] var a = Array(0, 1, 2, 3, 4) // un sol param. llargada ; més d'un, suposa que són elements a.length // llargada // mètodes generadors: push, pop, shift, unshift, concat // mètodes consultors: slice (llesca), join (ajunta formant String) // altres mètodes: reverse, sort, splice (substitueix elements)
[modifica] Date (data)
var a = new Date('Jan 10, 2009 12:01:02')
Mètodes desconcertants o de nom o valor equívoc o inhabitual
a.getDate() // dia numèric del mes, rang 1..28.. a.getDay() // dia numèric de la setmana rang 0..6 a.getMonth() // mes numèric, rang 0..11 a.getYear() // any del segle (2 dígits) a.getFullYear // any de 4 dígits a.getTime() // segons des de l'època Unix ( 1 de Gener del 1970)
[modifica] RegExp (expressió regular)
var a = '/' patró_d'expressio_regular '/' senyals // EBNF senyals ::= { 'g' | 'i' | 'm' }
propietats:
str a.source // cadena patró
num a.lastIndex // posició on començar el proper intent d'encaixar, inicialment 0
bool a.global // senyal g -- (cerca múltiple) actualitza la
// propietat lastIndex per a la cerca següent
bool a.ignoreCase // senyal i -- ignora caixa majús/min
bool a.multiline // senyal m -- ignora salts de linia
mètodes
a.test( str) // equival a: a.exec( str) != null
res = a.exec( str) // executa l'expressió regular contra la cadena str
// fins a aconseguir un encaix
/* el resultat és o null (fracàs), o en cas d'èxit, un objecte Array amb propietats addicionals
-- res.length : nombre d'encaixaments corresp. a tot el patró més grups assenyalats pels parèntesis
-- res[ 0] : subcadena encaixada corresponent a tot el patró
-- res[ 1..length-1] : subcadenes corresponents a grups
-- res.index : posició d'inici de l'encaix trobat a str
-- res.input : valor de la cadena d'entrada str
-- cas del senyal "g", a.lastIndex s'incrementa amb la llargada del resultat de l'encaix res[0], preparat per a la cerca de l'encaix consecutiu
*/
[modifica] Math
biblioteca d'operacions numèriques.
Math.floor( -3.5) == -4 // terra: major sencer inferior -- cas de positius: part sencera Math.ceil( -3.5) == -3 // sostre: menor sencer superior
[modifica] Creació d'objectes
[modifica] directament
var objJoanPersona = new Object()
objJoanPersona.nom = 'Joan'
objJoanPersona.edat = 25
// o també
var objJoanPersona = {nom: 'Joan', edat: 25}
[modifica] amb una funció plantilla
function Alumne( academia, numMatricula, assig)
{
this.academia = academia ;
this.numMatricula = numMatricula ;
this.assignatures = assig ;
}
var objJoanAlumneDeA = new Alumne( 'Escola A', 36, ["Javascript", "Java"] ) ;
[modifica] amb mecanisme d'herència per delegació a un altre objecte
Una classe d'objectes nova pot partir de les propietats i comportament d'un altre objecte, que passa a ser el seu prototipus.
Alumne.prototype = objJoanPersona -- previ a la instanciació de l'objecte var objJoanAlumneDeA = new Alumne( 'Escola A', 36, ["Javascript", "Java"] ) ; objJoanAlumneDeA.nom // resultat, per delegació al prototipus objJoanPersona, 'Joan' objJoanAlumneDeA.nom = 'Joan de Badalona' // nova prop. específica, l'objecte prototipus no queda afectat.
[modifica] Referències
- ↑ Mozilla - Rhino, motor de Javascript (anglès)
[modifica] Enllaços externs
- Most Popular Javascript Tutorials (anglès)
- Trucs de JavaScript (castellà)
- Referència de JavaScript de Sun (anglès)
- Llista de correu de javaEScript
- Guia de JavaScript 1.5 (anglès)
- W3Schools.com - Guia en línia de Javascript (anglès)
- W3Schools.com - Guia en línia de E4X (anglès) Extensió de suport de XML al llenguatge Javascript.
- Object Oriented programming in Javascript (anglès)
- Microsoft - Jscript (anglès) Versió Javascript de Microsoft
- Versions i característiques de Jscript que suporten les diferents versions de l'Internet Explorer
Eines personals
Imprimeix/exporta
En altres llengües
- Afrikaans
- العربية
- Žemaitėška
- Беларуская
- Беларуская (тарашкевіца)
- Български
- ᨅᨔ ᨕᨘᨁᨗ
- Česky
- Чӑвашла
- Dansk
- Deutsch
- Ελληνικά
- English
- Esperanto
- Español
- Eesti
- Euskara
- فارسی
- Suomi
- Français
- Galego
- עברית
- हिन्दी
- Hrvatski
- Magyar
- Interlingua
- Bahasa Indonesia
- Íslenska
- Italiano
- 日本語
- Basa Jawa
- ქართული
- ភាសាខ្មែរ
- 한국어
- Lietuvių
- Latviešu
- Македонски
- മലയാളം
- Монгол
- Bahasa Melayu
- Nederlands
- Norsk (bokmål)
- Polski
- Português
- Română
- Русский
- Саха тыла
- Simple English
- Slovenčina
- Slovenščina
- Shqip
- Српски / Srpski
- Svenska
- தமிழ்
- Тоҷикӣ
- ไทย
- Türkçe
- Українська
- Tiếng Việt
- 中文
- 粵語
- Darrera modificació de la pàgina: 1 març 2010 a les 01:42.
- El text està disponible sota la Llicència de Creative Commons Reconeixement/Compartir-Igual; es poden aplicar termes addicionals.
Vegeu les Condicions d'ús per a més informació.
Wikipedia® (Viquipèdia™) és marca registrada de Wikimedia Foundation, Inc.
- Política de privadesa
- Quant al projecte Viquipèdia
- Avís d'exempció de responsabilitat