JavaScript

Versiunea actuală a paginii nu a fost încă examinată de colaboratori experimentați și poate diferi semnificativ de versiunea revizuită la 11 mai 2022; verificările necesită 22 de modificări .
JavaScript
Clasa de limba

multi- paradigma : orientat pe obiect ( prototipic ), generalizat , funcțional , imperativ , orientat pe aspect ,

programare bazată pe evenimente
Tipul de execuție interpretare, traducere în bytecode Java [ 1] , JIT în cod nativ [2]
Aparut in 1995
Autor Brendan Eich
Extensie de fișier .js, .cjs, .mjs[Спецификация 1]
Eliberare ECMAScript 2022 [3]  (iunie 2022 ) ( 2022-06 )
Tip sistem dinamic , rață
Implementări majore SpiderMonkey , Rhino , KJS (JavaScript) , JavaScriptCore , V8
A fost influențat Lua , Self [4] , C , Scheme [4] , Perl [4] , Python , Java [4] , AWK [4] , HyperTalk [4]
influențat Objective-J , Dart , TypeScript
 Fișiere media la Wikimedia Commons
JavaScript
Extensie .js[7]
tip MIME text/javascript, aplicație/javascript [5] [6]
publicat septembrie 1995 [8]
Tip de format fișier text cu cod sursă
Extins din ECMAScript
 Fișiere media la Wikimedia Commons

JavaScript ( / ˈ dʒ ɑː v ɑː ˌ s k r ɪ p t / ; abreviat JS /ˈdʒeɪ.ɛs./ ) este un limbaj de programare cu mai multe paradigme . Suportă stiluri orientate pe obiecte , imperative și funcționale . Este o implementare a specificației ECMAScript (standard ECMA-262 [9] ).

JavaScript este folosit în mod obișnuit ca limbaj încorporabil pentru accesul programatic la obiectele aplicației . Este cel mai larg utilizat în browsere ca limbaj de scripting pentru a face pagini web interactive [10] .

Principalele caracteristici arhitecturale: tastare dinamică , tastare slabă , management automat al memoriei , programare prototipală , funcții ca obiecte de primă clasă .

JavaScript a fost influențat de multe limbi, iar scopul a fost de a face limbajul similar cu Java. JavaScript nu este deținut de nicio companie sau organizație, ceea ce îl deosebește de o serie de limbaje de programare utilizate în dezvoltarea web [~ 1] [11] .

Numele „JavaScript” este o marcă comercială înregistrată în SUA a Oracle Corporation [12] .

În 1992, Nombas ( achiziționat ulterior de Openwave ) a început să dezvolte un limbaj de scripting incorporabil Cmm (C-minus-minus), care, conform dezvoltatorilor, trebuia să fie suficient de puternic pentru a înlocui macrocomenzile , păstrând în același timp asemănarea cu C. , astfel încât dezvoltatorii să-l poată învăța cu ușurință [13] . Principala diferență față de C a fost gestionarea memoriei. În noua limbă, toată gestionarea memoriei a fost efectuată automat: nu a fost nevoie să se creeze buffere , să se declare variabile și să se efectueze conversie de tip. În alte privințe, limbajele erau foarte asemănătoare între ele: în special, Cmm suporta funcții standard și operatori C [14] . Cmm a fost redenumit ScriptEase pentru că numele inițial suna prea negativ, iar mențiunea lui C în el a „speriat” oamenii [13] [15] . Pe baza acestui limbaj, a fost creat produsul proprietar CEnvi . La sfârșitul lui noiembrie 1995, Nombas a dezvoltat o versiune de CEnvi care este încorporată în paginile web. Paginile care puteau fi modificate folosind limbajul de scripting s-au numit Espresso Pages  , care a demonstrat utilizarea limbajului de scripting pentru a crea un joc, a valida introducerea utilizatorului în formulare și a crea animații. Espresso Pages a fost poziționat ca o demonstrație pentru a vă ajuta să vă imaginați ce s-ar întâmpla dacă limbajul Cmm ar fi implementat în browser . Au funcționat doar în Netscape Navigator pe 16 biți sub Windows [16] .

Prima implementare JavaScript a fost creată de Brendan Eich la Netscape și de atunci a fost actualizată pentru a se conforma cu ECMA-262 Ediția 5 și mai târziu. Acest motor se numește SpiderMonkey și este implementat în C/ C++ . Motorul Rhino a fost creat de Norris Boyd și implementat în Java. La fel ca SpiderMonkey , Rhino respectă ECMA-262 Edition 5.   

JavaScript

Brendan Eich , angajat de Netscape pe 4 aprilie 1995 [18] , a fost însărcinat să aducă limbajul de programare Scheme , sau ceva similar, în browserul Netscape. Pe măsură ce cerințele au fost estompate, Eich a fost mutat în grupul Server Products, unde a petrecut o lună lucrând la îmbunătățirea protocolului HTTP [18] . În mai, dezvoltatorul a fost transferat înapoi în echipa client (browser), unde a început imediat să dezvolte conceptul unui nou limbaj de programare. Managementul dezvoltării browserului, inclusiv Tom Paquin , Michael Toy , Rick Schell , au fost convinși că Netscape ar trebui să accepte un limbaj de programare încorporat în codul HTML al paginii [ 19 ] .  

În plus față de Brendan Eich, [18 ] co -fondatorul Netscape Communications [20] Mark Andressen și co-fondatorul Sun Microsystems Bill Joy au participat la dezvoltare : pentru a avea timp să termine munca la limbajul pentru lansarea browserului. , companiile au încheiat un acord de cooperare pentru dezvoltare [21] . Ei și-au propus scopul de a oferi un „limbaj pentru lipirea” părților constitutive ale unei resurse web: imagini, plug-in-uri, applet-uri Java, care ar fi convenabil pentru web designeri și programatori care nu au calificări înalte [18] .

Limbajul a fost inițial numit Mocha [23] [24] [25] la sugestia lui Mark Andreessen [22] , a fost implementat de Brendan Eich în zece zile și a fost inclus pentru prima dată în versiunea pre-alfa a Netscape 2 [22] . Apoi a fost redenumit LiveScript [25] [26] și a fost destinat atât programării pe partea client, cât și pe partea serverului (unde urma să fie numit LiveWire) [21] . Sintaxa a fost influențată de limbajele C și Java și, din moment ce Java era un cuvânt la modă la acea vreme [18] [21] , LiveScript a fost redenumit JavaScript [27] pe 4 decembrie 1995, sub licență de la Sun. Anunțul JavaScript făcut de reprezentanții Netscape și Sun a avut loc în ajunul lansării celei de-a doua versiuni beta a Netscape Navigator [18] . Acesta declară că 28 de companii IT de top și-au exprimat intenția de a folosi JavaScript ca limbaj de scriptare obiect standard deschis în produsele lor viitoare [28] .

În 1996, Microsoft a lansat un analog al limbajului JavaScript numit JScript . Această limbă a fost anunțată la 18 iulie 1996 [29] . Primul browser care a susținut această implementare a fost Internet Explorer 3.0.

La inițiativa Netscape [30] [31] , limbajul a fost standardizat de asociația ECMA . Versiunea standardizată se numește ECMAScript , descrisă de standardul ECMA-262 . Prima versiune a specificației corespundea versiunii JavaScript 1.1, precum și limbajelor JScript și ScriptEasy [13] [21] .

Popularitate

În limbajul de programare cel mai greșit înțeles din lume  a devenit cel mai popular limbaj de programare din lume  [ 32]Douglas Crockford susține că JavaScript a preluat poziția de lider datorită dezvoltării AJAX , deoarece browserul a devenit sistemul de livrare a aplicațiilor predominant. El observă, de asemenea, popularitatea tot mai mare a JavaScript, faptul că acest limbaj este încorporat în aplicații, subliniază importanța limbajului.

Conform indexului TIOBE , bazat pe Google , MSN , Yahoo! , Wikipedia și YouTube , în aprilie 2015 JavaScript era pe locul 6 (acum un an - pe locul 9) [33] .

Potrivit Black Duck Software [34] , utilizarea JavaScript a fost în creștere în dezvoltarea de software open source . 36% dintre proiectele lansate între august 2008 și august 2009 implică JavaScript, cel mai des folosit limbaj de programare, cu o popularitate în creștere rapidă. 80% din software-ul open source utilizează C, C++, Java, Shell și JavaScript. Cu toate acestea, JavaScript este singura dintre aceste limbi a cărei cotă de utilizare a crescut (mai mult de 2 procente, dacă numărați în rânduri de cod) [35] .

JavaScript este cel mai popular limbaj de programare folosit pentru a dezvolta aplicații web la nivelul clientului [36] [37] .

Caracteristici ale limbii

JavaScript este un limbaj orientat pe obiecte , dar prototipul folosit în limbaj [38] [39] provoacă diferențe în lucrul cu obiecte în comparație cu limbajele tradiționale orientate spre clasă. În plus, JavaScript are o serie de proprietăți inerente limbajelor  funcționale - funcționează ca obiecte de primă clasă , obiecte ca liste, curry , funcții anonime , închideri [40]  - care oferă limbajului o flexibilitate suplimentară.

În ciuda sintaxei similare cu C, JavaScript are diferențe fundamentale în comparație cu limbajul C :

Limbului îi lipsesc lucruri atât de utile [41] precum:

Semantică și sintaxă

Sintaxa JavaScript este foarte asemănătoare cu cea a C și Java , dar din punct de vedere semantic limbajul este mult mai aproape de Self , Smalltalk sau chiar Lisp [32] [42] [Specificația 2] .

În JavaScript:

Structura limbii

Din punct de vedere structural, JavaScript poate fi reprezentat ca o uniune a trei părți distincte [43] [44] [45] [46] :

Când luați în considerare JavaScript în medii non-browser, este posibil ca modelul obiect browser și modelul obiect document să nu fie acceptate [45] .

Document Object Model este uneori considerat ca o entitate separată de JavaScript [47] [48] [Specificația 3] , ceea ce este în concordanță cu definiția DOM ca interfață de document independentă de limbaj [49] [~ 3] . În contrast, un număr de autori consideră că BOM și DOM sunt strâns legate [50] [51] .

Core

ECMAScript nu este un limbaj de browser și nu definește metode de intrare și ieșire [43] . Este mai degrabă baza pentru construirea limbajelor de scripting. Specificația ECMAScript descrie tipuri de date, instrucțiuni, cuvinte cheie, cuvinte rezervate , operatori , obiecte, expresii regulate , fără a restricționa autorii limbajelor derivate de a le extinde cu noi componente.

Model obiect browser

Modelul obiect al browserului este o parte specifică browserului a limbajului [45] [52] care este un strat între nucleu și modelul obiect al documentului [53] . Scopul principal al modelului obiect al browserului este de a gestiona și interacționa cu ferestrele browserului. Fiecare dintre ferestrele browserului este reprezentată de un obiect window, obiectul DOM central. Modelul obiect browser nu este în prezent standardizat [45] [54] , dar o specificație este în curs de dezvoltare de către WHATWG [53] [Spec 4] și W3C [44] [Spec 5] .

Pe lângă gestionarea ferestrelor, în cadrul modelului obiect al browserului, browserele oferă de obicei suport pentru următoarele entități [53] [54] :

  • managementul cadrelor ,
  • suport pentru întârzierea execuției codului și bucla cu întârziere,
  • dialoguri de sistem,
  • gestionarea adresei paginii deschise,
  • gestionarea informațiilor din browser,
  • monitorizați managementul informațiilor despre parametri ,
  • management limitat al istoricului de navigare,
  • suport pentru lucrul cu cookie-uri HTTP .
Modelul obiect document

Document Object Model este o interfață de programare a aplicațiilor pentru documente HTML și XML [55] . Conform DOM, un document (de exemplu, o pagină web) poate fi reprezentat ca un arbore de obiecte care au o serie de proprietăți care vă permit să efectuați diverse manipulări cu acesta:

  • generarea și adăugarea de noduri,
  • obținerea de noduri,
  • schimbarea nodului,
  • modificarea conexiunilor dintre noduri,
  • eliminarea nodurilor.

Încorporarea în pagini web

Locație în cadrul paginii

Pentru a adăuga cod JavaScript la o pagină, puteți utiliza etichetele <script></script>[Specificație 6] , care sunt recomandate, dar nu obligatorii, plasate în interiorul <head>. Într-un document poate exista orice număr de containere <script>. Atributul type="text/javascript"este opțional, această valoare este folosită implicit [56] .

Un script care afișează o fereastră modală cu inscripția clasică „Hello, World!” în interiorul browserului:

< script type = "application/javascript" > alert ( 'Buna ziua, lume!' ); </ script >


Locația în etichetă

Specificația HTML descrie un set de atribute utilizate pentru a defini gestionatorii de evenimente [Specificația 7] . Exemplu de utilizare:

< a href = "delete.php" onclick = "confirm('Ești sigur?'); return false;" > Șterge </a> _ _

În exemplul de mai sus, când faceți clic pe link, funcția confirm('Вы уверены?');afișează o fereastră modală cu inscripția „Ești sigur?”, dar return false;blochează tranziția către link. Desigur, acest cod va funcționa numai dacă browserul are și suportul JavaScript activat, altfel linkul va fi urmat fără avertisment.

Utilizarea codului JavaScript în contextul markupului paginii este considerată o practică proastă în JavaScript discret . Analogic (cu condiția ca legătura să fie furnizată cu un identificator alertLink)

<a id="alertLink"> _ _ _ _ Șterge </a> _ _

Exemplul de mai sus ar putea fi, de exemplu, următorul fragment JavaScript:

fereastra . onload = () => { const linkWithAlert = document . getElementById ( 'alertLink' ); linkWithAlert . addEventListener ( 'click' , async () => { if ( confirma ( 'Ești sigur?' )) { await fetch ( 'delete' , { method : 'DELETE' }) } }) }; Mutarea într-un fișier separat

Există o a treia modalitate de a conecta JavaScript - scrieți un script într-un fișier separat și apoi conectați-l folosind construcția

< body > < script type = "application/javascript" src = "http://Path_to_coscript_file" > </ script > </ body > Atributele elementului de script

Elementul de script, utilizat pe scară largă pentru a se conecta la o pagină JavaScript, are mai multe atribute.

Propunerea de lucru RFC-4329 care definește [57] un tip MIME conform cu JavaScript afirmă :

[5]

tipuri de media

  • application/javascript,
  • application/ecmascript,

care sunt, de asemenea, definite în acest document sunt destinate utilizării practice și ar trebui să fie preferate.

Text original  (engleză)[ arataascunde] Utilizarea tipului de nivel superior „text” pentru acest tip de conținut este cunoscută a fi problematică. Astfel, acest document le definește text/javascriptși text/ecmascriptle marchează ca fiind „învechite”. Utilizarea tipurilor de media experimentale și neînregistrate, așa cum sunt enumerate în parte mai sus, este descurajată.

tipurile media,

  • application/javascript
  • application/ecmascript
care sunt, de asemenea, definite în acest document, sunt destinate utilizării comune și ar trebui utilizate în schimb.
  • atribut opțional srccare ia ca valoare adresa către fișierul cu scriptul.
  • un atribut opțional charset, folosit cu srcpentru a specifica codificarea fișierului extern de utilizat.
  • atributul opțional deferspecifică faptul că scriptul este primit asincron, dar execuția ar trebui să fie amânată până când întreaga pagină a fost încărcată.
  • un atribut opțional asyncindică faptul că scriptul este primit asincron, iar execuția va fi efectuată imediat după finalizarea descărcării. Ordinea în care sunt executate scripturile nu este garantată.

În același timp, language="JavaScript"atributul limbaj ( ) , în ciuda utilizării sale active (în 2008, acest atribut a fost cel mai des folosit atribut pentru eticheta <script>[58] ), este depreciat, nu se află în DTD și, prin urmare, este considerat incorect [ 59] .

Domeniul de aplicare

Aplicații web

JavaScript este utilizat în partea client a aplicațiilor web: programe client-server în care browserul este clientul și serverul web este serverul, având logica distribuită între server și client. Schimbul de informații în aplicațiile web are loc prin rețea. Un avantaj al acestei abordări este faptul că clienții sunt independenți de sistemul de operare al utilizatorului, astfel încât aplicațiile web sunt servicii multiplatforme.

AJAX

JavaScript este utilizat în AJAX , o abordare populară pentru construirea de interfețe interactive de utilizator pentru aplicații web, care implică o comunicare asincronă „de fundal” între browser și serverul web. Ca urmare, la actualizarea datelor, pagina web nu se reîncarcă complet, iar interfața aplicației web devine mai rapidă decât ar fi cu abordarea tradițională (fără a utiliza AJAX).

Cometa

Comet este un concept larg care descrie modul în care funcționează aplicațiile web folosind conexiuni HTTP persistente, care permite unui server web să trimită date către un browser fără nicio solicitare suplimentară din partea browserului. Aceste aplicații folosesc tehnologii suportate direct de browsere. În special, folosesc pe scară largă JavaScript.

Sisteme de operare browser

JavaScript este utilizat pe scară largă în sistemele de operare ale browserului . Deci, de exemplu, codul sursă IndraDesktop WebOS este 75% JavaScript, codul sistemului de operare al browserului IntOS  este 70%. Ponderea JavaScript în codul sursă al eyeOS  este de 5%, totuși, chiar și în cadrul acestui sistem de operare, JavaScript joacă un rol important, participând la randarea pe client și fiind un mecanism necesar pentru comunicarea dintre client și server [60]. ] .

Bookmarklets

JavaScript este folosit pentru a crea programe mici care sunt marcate în browser. Aceasta utilizează adrese URL cu specificatorul javascript:[61] .

Scripturi utilizator în browser

Scripturile de utilizator ale browserului sunt programe JavaScript care rulează în browserul utilizatorului atunci când o pagină este încărcată. Acestea vă permit să completați automat formulare, să reformatați paginile, să ascundeți conținutul nedorit și să încorporați conținutul pe care doriți să-l afișați, să schimbați comportamentul părții client a aplicațiilor web, să adăugați controale la pagină și așa mai departe.

Mozilla Firefox folosește extensia Greasemonkey pentru a gestiona scripturile utilizatorului ; Opera [62] [63] [64] și Google Chrome [65] oferă suport pentru scripturile utilizatorului și capacitatea de a executa o serie de scripturi Greasemonkey.

Aplicații server

Aplicațiile scrise în JavaScript pot rula pe servere care rulează Java 6 și mai târziu [66] . Această circumstanță este folosită pentru a construi aplicații de server care permit procesarea JavaScript pe partea serverului.

Pe lângă Java 6, există o serie de platforme care utilizează motoarele JavaScript existente (interpreți) pentru a rula aplicații server. (De regulă, vorbim despre reutilizarea motoarelor create anterior pentru a executa cod JavaScript în browserele WWW.)

Cadre de execuție a aplicațiilor JavaScript Server
Nume Motorul JavaScript folosit Limbi în care sunt scrise motorul și platforma Licență
Jaxer [67] Maimuță păianjen [68] C++, C GPL 3 [69]
cadru perseverent [70] Rinocer Java Licență BSD modificată [71]
Helma [72] Rinocer Java, JavaScript Licență Helma 2.0 asemănătoare BSD [73]
v8cgi V8 C++, JavaScript Licență BSD [74]
node.js V8 C++ Licență MIT [75]
gopherjs merge merge Licență BSD

JavaScript de pe partea de server este folosit în proiectele Google [76] . De exemplu, Google Sites permite personalizarea folosind scripturi JavaScript executate de motorul Rhino [77] .

Aplicații mobile

Tranziția dispozitivelor mobile Palm pentru a utiliza Palm webOS ca sistem de operare cu Mojo SDK ca kit de dezvoltare [78] permite ca JavaScript să fie folosit ca limbaj de dezvoltare a aplicațiilor mobile [79] [80] .

Widgeturi

Un widget este un mini-program auxiliar, al cărui modul grafic este plasat în spațiul de lucru al programului părinte corespunzător , care servește la decorarea spațiului de lucru, la distracție, la rezolvarea sarcinilor individuale de lucru sau la obținerea rapidă de informații de pe Internet fără folosind un browser web. JavaScript este folosit atât pentru a implementa widget-uri, cât și pentru a implementa motoarele de widget-uri. În special, Apple Dashboard , Microsoft Gadgets , Yahoo! Widgeturi , Google Gadgets , Klipfolio Dashboard .

Aplicație software

JavaScript este folosit pentru a scrie aplicații software . De exemplu, 16,4% din codul sursă Mozilla Firefox este scris în JavaScript.

Google Chrome OS folosește aplicații web ca aplicații software [81] .

Mediul desktop GNOME are capacitatea de a crea programe JavaScript care operează pe bibliotecile GNOME folosind Gjs , Seed [82] .

Manipularea obiectelor aplicației

JavaScript găsește, de asemenea, utilizare ca limbaj de scripting pentru accesarea obiectelor aplicației. Platforma Mozilla ( XUL / Gecko ) folosește JavaScript. Printre produsele terțe, de exemplu, Java a inclus un interpret JavaScript încorporat bazat pe Rhino încă din versiunea 6 [66] . Scripturile JavaScript sunt acceptate în aplicațiile Adobe, cum ar fi Adobe Photoshop , Adobe Dreamweaver , Adobe Illustrator și Adobe InDesign .

Aplicații de birou

JavaScript este folosit în aplicațiile de birou pentru a automatiza acțiunile de rutină, pentru a scrie macrocomenzi și pentru a organiza accesul de la serviciile web.

Microsoft Office

Excel Services 2010 a adăugat [83] două noi interfețe de programare a aplicațiilor: REST API și JavaScript Object Model ( JSOM ).

  • API-ul REST Excel Services 2010 permite [84] acces la obiecte din registrul de lucru, cum ar fi tabele, diagrame și serii de date denumite; obține imagini, HTML, Atom , registre de lucru; setați valori și actualizați calculele înainte de a interoga articolele [84] .
  • JSOM face posibilă răspunderea la acțiunile utilizatorului în legătură cu Excel Web Access ( EWA ), interacționarea programatică cu componentele EWA. Utilizarea JSOM se face prin plasarea codului JavaScript pe o pagină care conține componente EWA [83] .
OpenOffice.org

JavaScript este unul dintre limbajele de programare utilizate pentru scrierea macrocomenzilor în aplicațiile care fac parte din OpenOffice.org [85] . OpenOffice.org integrează interpretul Rhino JavaScript [86] . Din decembrie 2009, suportul JavaScript era limitat. Limitări inerente [86] dezvoltării macrocomenzilor OpenOffice.org în JavaScript:

  • Runtime JavaScript acceptă doar încărcarea claselor Java care sunt implementate de un script JavaScript.
  • Runtime JavaScript nu furnizează mesaje de eroare care apar în timpul execuției scriptului;
  • suportul pentru dezvoltarea JavaScript interactiv nu a fost încă implementat.

OpenOffice.org are un editor și un depanator JavaScript [87] .

Educație în informatică

JavaScript are valoare propedeutică , permițând o combinație între practica intensivă de programare și amploarea tehnologiilor utilizate în predarea informaticii [88] . Predarea acestui limbaj la școală vă permite să creați o bază pentru învățarea programarii web , să utilizați proiecte creative în clasă [89] . Cursul corespunzător vă permite să oferiți un nivel aprofundat de studiu al informaticii și are sens să îl includeți în cursurile opționale de un nivel aprofundat de pregătire [90] .

JavaScript este un limbaj potrivit pentru a învăța programarea jocurilor . În comparație cu alternativele, este suficient din punct de vedere funcțional, ușor de învățat și utilizat, reduce complexitatea învățării, motivează cursanții să-și împărtășească jocurile cu ceilalți [91] .

Părți despre implementarea în JavaScript a algoritmilor , tehnicilor, structurilor de date clasice, neincluse în cartea lui Nicholas Zakas „Professional JavaScript for Web Developers” , au servit [92] drept început al proiectului Informatică în JavaScript [~ 4] .

Versiuni

JavaScript Versiunea JScript corespunzătoare Schimbări semnificative
1.0 ( Netscape 2.0, martie 1996) 1.0 (versiunile timpurii ale IE 3.0, august 1996) Versiunea originală a limbajului JavaScript.
1.1 (Netscape 3.0, august 1996) 2.0 (versiunile ulterioare ale IE 3.0, ianuarie 1997) În această versiune, obiectul a fost implementat Arrayși cele mai grave erori au fost remediate.
1.2 (Netscape 4.0, iunie 1997) Comutare implementată switch, expresii regulate. Practic adus în conformitate cu prima ediție a specificației ECMA-262.
1.3 (Netscape 4.5, octombrie 1998) 3.0 (IE 4.0, octombrie 1997) Compatibil cu prima ediție a ECMA-262.
1.4 (doar Netscape Server) 4.0 ( Visual Studio 6, fără versiune IE) Se aplică numai produselor server Netscape.
5.0 (IE 5.0, martie 1999)
5.1 (IE 5.01)
1.5 (Netscape 6.0, noiembrie 2000; și
versiuni ulterioare ale Netscape și Mozilla )
5.5 (IE 5.5, iulie 2000) Revizia 3 (decembrie 1999). Compatibil cu a treia ediție a specificației ECMA-262.
5.6 (IE 6.0, octombrie 2001)
1.6 ( Gecko 1.8, Firefox 1.5, noiembrie 2005) Revizia 3 cu unele îmbunătățiri compatibile: E4X , completări la Array(de ex. Array.prototype.forEach), simplificări pentru Arrayși String[93]
1.7 (Gecko 1.8.1, Firefox 2.0, toamna 2006), extensia JavaScript 1.6 Revizia 3, adăugând toate îmbunătățirile de la JavaScript 1.6, generatoare și liste de înțelegere din Python , blocuri folosind și destructurarea atribuirii ( ) [ 94] . [a*a for (a in iter)]letvar [a, b] = [1, 2]
JScript .NET ( ASP.NET ; fără versiune IE) (Se crede că JScript .NET a fost dezvoltat cu contribuții din partea altor membri ECMA )
1.8 (Gecko 1.9, Firefox 3.0, toamna 2008), extensia JavaScript 1.7 Notație nouă pentru funcții similare expresiilor lambda tipice , generatoare , metode noi pentru procesarea matricelor iterative reduce()și reduceRight()[95] .
1.8.1 (Gecko 1.9.1, Firefox 3.5) Suport JSON nativ, metoda getPrototypeOf()y , , , Objectmetode y [96]trim()trimLeft()trimRight()String
2.0 Revizia 4 (lucrări în curs [97] , titlu rezervat de ECMA, dar neutilizat pentru publicare [Specificația 9] )
Revizia 5 (cunoscută anterior ca ECMAScript 3.1 [97] . Finalizată la 3 decembrie 2009 [98] [99] .)

Biblioteci JavaScript

Pentru a oferi un nivel ridicat de abstractizare și pentru a obține un grad acceptabil de compatibilitate între browsere , bibliotecile JavaScript sunt utilizate în dezvoltarea aplicațiilor web. Sunt o colecție de obiecte și funcții reutilizabile. Bibliotecile JavaScript notabile includ React.js , Vue.js , Ember.js , Adobe Spry , AngularJS , Svelte , Dojo , , jQuery , Mootools , Prototype , Qooxdoo și Underscore .


Depanare

În JavaScript, accesul la programe de depanare devine deosebit de util atunci când se dezvoltă programe mari, netriviale, din cauza diferențelor de implementare între browsere (în special în ceea ce privește Modelul obiectului documentului ). Multe browsere au un depanator încorporat.

Internet Explorer are trei programe de depanare: Microsoft Visual Studio  este cel mai complet, urmat de Microsoft Script Editor (o componentă a Microsoft Office [100] ), și în sfârșit Microsoft Script Debugger gratuit, mult mai simplu decât celelalte două. Microsoft Visual Web Developer Express gratuit oferă o versiune limitată cu o funcție de depanare JavaScript în Microsoft Visual Studio. În cea de-a opta versiune a IE, împreună cu instrumente pentru dezvoltatori, a apărut un depanator încorporat.

Opera are și propriul său depanator, Opera Dragonfly [101] .

Aplicațiile web pe care le dezvoltați în Firefox pot fi depanate utilizând Instrumentele pentru dezvoltatori Firefox încorporate.

Safari include programul de depanare JavaScript WebKit Web Inspector [102] . Același depanator este disponibil și în alte browsere care utilizează WebKit : Google Chrome, Arora , Rekonq , Midori etc.

Instrumente de testare

Majoritatea cadrelor de testare automatizate pentru codul JavaScript necesită să rulați testele în browser. Acest lucru se face folosind o pagină HTML care este contextul testului , care la rândul său încarcă tot ceea ce este necesar pentru a efectua testul. Primele astfel de cadre au fost JsUnit (creat în 2001), Selenium (creat în 2004) [103] . O alternativă este să rulați teste din linia de comandă. În acest caz, sunt utilizate medii non-browser, cum ar fi Rhino [104] . Unul dintre primele instrumente de acest gen este Crosscheck, care vă permite să testați codul emulând comportamentul Internet Explorer 6 și Firefox versiunile 1.0 și 1.5 [105] . Un alt exemplu de cadru de testare automată pentru codul JavaScript care nu utilizează un browser pentru a rula teste este biblioteca env.js creată de John Resig. Folosește Rhino și conține emularea mediului browser și DOM [106] .

Blue Ridge, un plugin pentru cadrul aplicației web Ruby on Rails , vă permite să testați codul JavaScript atât în ​​interior, cât și în afara browserului. Acest lucru se realizează prin utilizarea cadrului de testare automată Screw.Unit și Rhino cu env.js [107] .

Principala problemă cu sistemele de testare care nu sunt browsere este că acestea folosesc mai degrabă emulări decât mediile reale în care este executat codul. Acest lucru duce la faptul că trecerea cu succes a testelor nu garantează că codul va funcționa corect în browser [108] [109] . Problema testării sistemelor care folosesc un browser este complexitatea lucrului cu acestea, necesitatea de a efectua acțiuni de rutină neautomatizate [110] . Pentru a rezolva acest lucru, JsTestDriver, un cadru de testare automatizat dezvoltat de Google, folosește un server care comunică cu browserele pentru a efectua testarea [111] . Selenium Remote Control, parte a cadrului de testare automată Selenium, se comportă într-un mod similar: include un server care pornește și oprește browserele și acționează ca un proxy HTTP pentru cererile către acestea [112] . În plus, Selenium conține Selenium Grid, care vă permite să testați simultan codul JavaScript pe diferite computere cu medii diferite, reducând timpul de execuție a testului [113] . Sprijinit de QUnit ( biblioteca jQuery ), UnitTestJS ( biblioteca Prototype ), JSSpec ( biblioteca MooTools ), JsUnit, Selenium și Dojo Objective Harness JavaScript, Testswarm este un suport de integrare continuă distribuită [114] .

O proprietate negativă pe care o poate avea un cadru de testare a codului JavaScript este prezența dependențelor. Acest lucru creează riscul ca codul testat care trece testele să eșueze într-un mediu care nu are aceste dependențe. De exemplu, versiunea originală a JsUnitTest, cadrul creat și folosit pentru a testa biblioteca Prototype, depindea de Prototype în sine pentru a schimba proprietățile obiectelor în sfera globală [115] . Includerea unui instrument de testare într- o bibliotecă JavaScript este o practică comună. Deci YUI Test 3 face parte din Yahoo! Biblioteca UI și poate fi utilizat în siguranță pentru a testa codul JavaScript arbitrar [116] . QUnit este un cadru de testare automat creat de dezvoltatorii jQuery [117] .

Relația cu alte limbi

Influență reciprocă

Standardizarea JavaScript a necesitat evitarea problemelor legate de mărcile comerciale, așa că standardul ECMA 262 numește limbajul ECMAScript, dintre care trei revizuiri au fost publicate de când au început lucrările la acesta în noiembrie 1996.

Objective-J  este un superset strict și compact de JavaScript care se adaugă la JavaScript:

  • moștenire tradițională,
  • Trimiterea metodei dinamice în stil Smalltalk / Objective-C ,
  • tastare pseudostatică.

VBScript de la Microsoft , precum JavaScript, poate fi rulat pe partea clientului în paginile web. VBScript are o sintaxă derivată din Visual Basic și este acceptată numai în Internet Explorer .

JSON , sau JavaScript Object Notation, este un format de schimb de date de uz general definit ca un subset de JavaScript.

Scheme este, de asemenea, o limbă soră cu JavaScript, deoarece ambele oferă caracteristici de programare funcționale bogate: JavaScript este un limbaj dinamic, acceptă matrice flexibile, poate simula cu ușurință expresii s și are suport pentru expresii lambda [118] .

JavaScript și Java

O concepție greșită comună este că JavaScript este similar sau strâns legat de Java , nu este [32] . Ambele limbi au o sintaxă asemănătoare C, sunt orientate pe obiecte și tind să fie utilizate pe scară largă în aplicațiile web la nivelul clientului. Diferențele importante includ:

Implementare

JavaScript implementează interpreții unui număr de limbaje de programare, ceea ce face posibilă utilizarea unui browser web ca timp de rulare pentru acestea. Ele pot fi folosite, de exemplu, în scopuri educaționale [119] .

HotRuby este o implementare gratuită a mașinii virtuale Ruby în JavaScript și Flash . Vă permite să executați bytecode rezultat din compilarea YARV . Implementează cea mai mare parte a gramaticii Ruby. Mecanismul de excepție și majoritatea funcțiilor și claselor încorporate nu au fost încă implementate [120] . Cu HotRuby, puteți utiliza scripturi ruby ​​pe pagini web. Pentru a face acest lucru, codul rubin ar trebui plasat într-un bloc:

< script type = "text/ruby" > ... </ script >

HotRuby îl va extrage, îl va trimite la un script de la distanță pentru compilare și apoi va afișa rezultatele pe pagina [121] . Această implementare permite accesul de la Ruby la obiectele JavaScript [122] .

Tabel de implementări ale limbajelor de programare JavaScript
Limba Numele implementării Autori principali Licență
JavaScript d-mr [123] Andrei Formiga NewBSD
postscriptum WPS [124] Tom Hlavaty ?
PDF
Asamblator pentru MOS Technology 6502 6502asm [125] Stian Soreng GPL
Obiectiv-J Cappuccino [126] Ross Boucher LGPL
Haskell ycr2js [127] Tom Shackell, Neil Mitchell, Andrew Wilkinson, Mike Dodds, Bob Davie, Dimitry Golubovsky licență permisivă simplă
Prolog Prolog de jucărie Monash [128] Lloyd Allison ?
ioctls [129] Jan Grant ?
pisică Cat Interpreter [130] Christopher Diggins domeniu public
Sistem BiwaScheme [131] Yutaka Hara MIT
DE BAZĂ Destul de BAZĂ [132] Nikko Strom proprietate gratuită
crin Crin [133] Bill Orcutt MIT
Mai departe în continuare [134] K Jacobson ?
PHP phype [135]
Python 3 PyPy.js ? ?
Oberon 07 oberonjs [136] Vlad Folts MIT

Interacțiune

Unele limbaje de programare oferă suport pentru interacțiunea cu codul JavaScript.

  • PHP are un pachet HTML Javascript care oferă o interfață pentru crearea de programe JavaScript simple [ 137] .
  • Pachetul corespunzător pentru Tcl se numește ::javascript. Oferă comenzi de generare a codului HTML și JavaScript [138] .
  • Pachetul Perl Data::JavaScript vă permite să portați structurile de date Perl la codul JavaScript [139] .

Suport browser

Până în prezent, suportul JavaScript este oferit de versiuni moderne ale tuturor browserelor cele mai frecvent utilizate. Internet Explorer , Opera , Mozilla Firefox , Safari , Google Chrome au suport complet pentru a treia ediție ECMA-262. În același timp, Mozilla Firefox a încercat să implementeze suport pentru cea de-a patra ediție a specificației, iar primul browser în care a apărut suport incomplet pentru specificația 3.1 a fost Internet Explorer 8 [140] .

Greșelile făcute de dezvoltatorii de browsere populare în implementarea specificației sunt de obicei minore [141] . Începând cu noiembrie 2009, modelul de obiecte de document are un suport mai limitat [142] .

Potrivit creatorului limbajului, suportul Microsoft în Internet Explorer a unuia dintre motoarele JavaScript rapide care există și este folosit în alte browsere poate duce la apariția unor aplicații care funcționează cu grafică tridimensională , jocuri 3D scrise în JavaScript, utilizarea JavaScript în sarcini care au folosit anterior tehnologia Adobe Flash [143] .

Suite de testare

Testarea de regresie a conformității browserului cu cea de-a treia ediție a specificației ECMA-262 poate fi efectuată [144] [145] folosind instrumentul dezvoltat de Google pentru testarea conformității cu specificația ECMAScript Sputnik , care include peste cinci mii de teste cazuri [146] și a fost numit după echipa rusă Google [146] , precum și shell-ul sputniktests-webrunner [147] scris de Yuri Zaitsev sau serviciul Google [148] . Cazurile de testare incluse în Sputnik sunt actualizate în legătură cu lansarea celei de-a cincea ediții a specificației ECMA-262, reflectând modificări față de ediția anterioară [149] .

Suita de conformitate ECMAScript 5 [150] este o suită de testare lansată de Microsoft sub licența BSD [151] pentru a verifica dacă o implementare a limbajului ECMAScript este conformă cu specificația ediției a cincea. La 12 martie 2010, în pachet existau 1236 de cazuri de testare, avea versiunea 0.2 alpha și numărul de descărcări în trei luni era de 178 [152] .

Suita de testare JavaScript de la Mozilla [153] [154] este disponibilă pentru a testa corectitudinea implementărilor JavaScript .

Securitate

JavaScript permite autorilor potențiali de cod rău intenționat să-l ruleze pe orice computer din rețea, prin simpla deschidere a unei pagini web pe acesta. Acest lucru are ca rezultat două limitări fundamentale:

  • Programele JavaScript rulează într-un sandbox , în care pot efectua doar o gamă limitată de acțiuni, și nu sarcini de programare cu scop general (de exemplu, crearea de fișiere, lucrul cu socket -uri ) [155] .
  • pentru codul JavaScript, se aplică regula de restricție a domeniului , conform căreia un script încorporat într-o pagină nu poate accesa un număr de proprietăți ale obiectelor unei alte pagini (în special, majoritatea proprietăților unui obiect document) dacă protocolul , gazda și numărul de port al acestor pagini diferă [ 156] .

În plus, furnizorii de browsere introduc restricții suplimentare ca răspuns la abuzurile care au loc. Așa a apărut, în special, interdicția de a deschide o fereastră, a cărei dimensiune a unei laturi este mai mică de o sută de pixeli [155] .

Vulnerabilități între site-uri

O problemă comună în ceea ce privește JavaScript este cross-site scripting sau XSS, o încălcare a regulii de restricție a domeniului. Vulnerabilitățile XSS apar în situațiile în care un atacator are capacitatea de a plasa script pe o pagină care este afișată utilizatorului. În acest caz, scriptul obține acces la site-ul cu drepturile acestui utilizator, ceea ce în unele cazuri deschide posibilitatea de a trimite informații confidențiale, efectuând tranzacții nedorite .

Vulnerabilitățile XSS apar și din cauza greșelilor făcute de dezvoltatorii de browser [157] .

Un alt tip de vulnerabilitate între site-uri este falsificarea cererilor între site-uri sau CSRF. Constă în capacitatea site-ului atacatorului de a forța browserul utilizatorului să efectueze o acțiune nedorită pe site-ul țintă (de exemplu, un transfer bancar de bani). Acest lucru este posibil dacă site-ul țintă se bazează numai pe cookie-uri HTTP sau pe cereri de autorizare. În acest caz, solicitările inițiate de codul site-ului atacatorului sunt executate în același mod ca și solicitările utilizatorului dacă acesta este autorizat pe site-ul țintă. Unul dintre mijloacele de protecție împotriva CSRF este efectuarea autentificării oricărei cereri care duce la consecințe ireversibile. Analizarea refererului HTTP poate ajuta, de asemenea .

Încredere de partea clientului greșit

Dezvoltatorii de aplicații client, indiferent dacă folosesc sau nu JavaScript, trebuie să știe că acestea din urmă pot fi sub controlul atacatorilor. Prin urmare, orice verificare pe partea clientului poate fi ocolită, JavaScript poate rula sau nu. Codul ofuscat poate fi inginerie inversă ; datele formularului pot fi trimise către server fără validare JavaScript ; scripturile pot fi dezactivate parțial, deci, de exemplu, nu poate fi implementată o protecție fiabilă împotriva salvării imaginilor folosind JavaScript [158] ; este extrem de imprudent să încorporați parola în JavaScript care rulează pe client, unde poate fi găsită de un atacator.

Erori în browser, pluginuri și extensii

JavaScript oferă o interfață pentru o gamă largă de capabilități ale browserului, dintre care unele pot conține erori, cum ar fi depășirile de buffer . Acest lucru vă permite să scrieți scripturi care determină executarea unui cod arbitrar pe sistemul utilizatorului.

Au fost găsite erori similare în browserele utilizate în mod obișnuit, inclusiv Mozilla Firefox [159] , Internet Explorer [160] , Safari [161] . Atunci când identifică erori potențial periculoase în browser și dețin informații despre exploit -urile implementate , producătorul și experții în securitate recomandă dezactivarea JavaScript înainte de lansarea patch- ului [162] [163] .

Plugin -urile precum playerele , Macromedia Flash și o serie de componente ActiveX disponibile implicit în Internet Explorer pot conține, de asemenea, erori exploatate cu JavaScript, așa cum sa întâmplat înainte [164] [165] .

Extensiile Mozilla Firefox nu sunt izolate unele de altele: o extensie poate repara alta, care poate fi exploatată de atacatori. La SecurityByte & Owasp AppSec Asia 2009 , Roberto Suggi Liverani și Nick Freeman au demonstrat trei exploit -uri în extensiile populare Firefox, descărcate de peste 30 de milioane de ori de pe site [166] .

Erori de implementare Sandbox

Browserele pot rula JavaScript în afara sandbox-ului cu privilegiile necesare pentru a crea și șterge fișiere, de exemplu. Cu toate acestea, astfel de privilegii nu ar trebui acordate codului de pe web.

Privilegiile necorespunzătoare pentru JavaScript de pe web au fost cauza unor vulnerabilități atât în ​​Internet Explorer [167] , cât și în Mozilla Firefox [168] .

Microsoft Windows permite fișierelor JavaScript să ruleze ca programele normale, fără a fi închise cu nisip. Acest lucru face posibilă crearea de troieni [169] .

Literatură

  • Fowler, Martin. Refactorizarea codului JavaScript: Îmbunătățirea designului codului existent, Ed. a II-a. - M . : „Dialectică” , 2019. - 464 p. - ISBN 978-5-907144-59-0 .
  • McFarland, David. JavaScript și jQuery: Ghidul definitiv. - M . : „Dialectică” , 2015. - 880 p. - ISBN 978-5-699-79119-4 .
  • Morgan, Nick. Javascript pentru copii. - M. , 2016. - 288 p. - ISBN 978-5-00100-295-6 .
  • Duckett, John. Javascript și jQuery. Dezvoltare web interactivă. - M. , 2017. - 640 p. - ISBN 978-5-699-80285-2 .
  • Resig John, Bibo Bear, Maras Josip. Javascript Ninja Secrets ed. a 2-a - M . : „Dialectică” , 2017. - 544 p. - ISBN 978-5-9908911-8-0 .
  • Nixon R. Construirea de site-uri web dinamice cu PHP, MySQL, JavaScript, CSS și HTML5. a 4-a ed. - Sankt Petersburg .. - M . : „Dialectica” , 2016. - 768 p. - ISBN 978-5-496-02146-3 .
  • Flavaran, David. JavaScrirt: Pocket Reference, Ed. a 3-a. - M. , 2013. - 320 p. - ISBN 978-5-8459-1830-7 .

Vezi și

Note

  1. Alexey White. Motoare JavaScript majore // Referință pentru programator JavaScript . - Indianapolis, IN 46256: Wiley Publishing, Inc., 2009. - P.  12-13 . - (Referința programatorului). — ISBN 978-0-470-34472-9 .
  2. Nicholas C. Zakas. Motoare JavaScript de ultimă generație // JavaScript de înaltă performanță / Editor: Mary E. Treseler. — Ed. I. - 1005 Gravenstein Highway North, Sebastopol, CA 95472: O'Reilly Media , 2010. - P. xiii. - ISBN 978-0-596-80279-0 .
  3. ECMA-262 . Arhivat din original pe 9 aprilie 2022. Preluat la 10 aprilie 2022.
  4. 1 2 3 4 5 6 _ Axel Rauschmayer. Natura JavaScript // Vorbind JavaScript . - Prima editie. - O'Reilly Media, 2014. - P. 41. - ISBN 978-1-449-36503-5 . Arhivat pe 10 mai 2015 la Wayback Machine
  5. 1 2 Hoehrmann B. RFC4329  (ing.) (txt). Grupul de lucru pentru tehnologii de rețea al Comisiei Speciale pentru Dezvoltarea Internetului (aprilie 2006). — Textul propunerii de lucru RFC4329. Data accesului: 28 septembrie 2009. Arhivat din original la 22 august 2011.
  6. ↑ 18.2.1 Elementul SCRIPT  . Specificație HTML 4.01 . W3C (24 decembrie 1999). — Descrierea elementului Script. Consultat la 25 septembrie 2009. Arhivat din original la 22 august 2011.
  7. Miller M., Borins M., Bynens M., Farias B. Updates to ECMAScript Media Types  (English) - IETF , 2022. - doi:10.17487/RFC9239
  8. https://web.archive.org/web/20070916144913/http://wp.netscape.com/newsref/pr/newsrelease67.html - 1995.
  9. Specificația limbajului ECMAScript . Consultat la 8 decembrie 2009. Arhivat din original la 12 aprilie 2015.
  10. Flanagan D. JavaScript. Ghid de buzunar. Faceți paginile dvs. web interactive! / Traducere de A.G. Sysonyuk. - Moscova.: Editura Williams, 2015. - P. 320. - 1000 de exemplare.  - ISBN 978-5-8459-1948-9 (rusă).
  11. D. Reisig. 4. Instrumente de depanare și testare // JavaScript. Tehnici profesionale de programare = Pro JavaScript™ Techniques / Traducere de N. Vilchinsky. - Sankt Petersburg. : Peter , 2008. - S. 76. - (Biblioteca Programatorului). - 2500 de exemplare.  - ISBN 978-5-91180-904-1 .
  12. Intrarea de drepturi de autor USPTO #75026640 . USPTO. Consultat la 9 aprilie 2020. Arhivat din original pe 23 aprilie 2012.
  13. 1 2 3 Istoricul  scripturilor . nombas. Arhivat din original pe 2 februarie 2006.
  14. Ford S., Wells D., Wells N. Web Programming Languages  ​​​​( 1 septembrie 1997). Consultat la 17 noiembrie 2009. Arhivat din original la 22 august 2011.
  15. Zakas, Nicholas Istoria și evoluția  Javascriptului . Consultat la 17 noiembrie 2009. Arhivat din original la 22 august 2011.
  16. Noorda, Brent information blitz  ( 27 noiembrie 1995). — Pagina care conține o scrisoare a președintelui Nombas, Brent Noord, care anunță Pagini Espresso. Consultat la 17 noiembrie 2009. Arhivat din original la 22 august 2011.
  17. JavaScript. Biblia utilizatorului = JavaScript. Biblie / Danny Goodman, Michael Morrison; pe. din engleza. I. V. Vasilenko . - a 5-a ed. - Moscova, Sankt Petersburg, Kiev: Dilectica, 2006. - S. 3, 26. - 1184 p. - 3000 de exemplare.  — ISBN 5-8459-1027-7 . Arhivat pe 2 aprilie 2015 la Wayback Machine
  18. 1 2 3 4 5 6 Hamilton, Naomi AZ a limbajelor de programare:  JavaScript . a-z de limbaje de programare . ComputerWorld (31 iulie 2008). Consultat la 18 noiembrie 2009. Arhivat din original la 22 august 2011.
  19. Eich, Brendan Popularity  (engleză)  (link nu este disponibil) (3 aprilie 2008). Consultat la 18 noiembrie 2009. Arhivat din original pe 7 aprilie 2008.
  20. Frommer, Dan Marc Andreessen Joins Board Facebook  ( 30 iunie 2008). Consultat la 18 noiembrie 2009. Arhivat din original la 22 august 2011.
  21. 1 2 3 4 Zakas N. O scurtă istorie // JavaScript profesional pentru dezvoltatori web. — Ed. a II-a. - SUA, Canada: Wiley Publishing, Inc., 2009. - P. 1, 2. - ISBN 978-0-470-22780-0 .
  22. 1 2 Allen Wirfs-Brock, Brendan Eich. JavaScript: primii 20 de ani  //  Proceedings of the ACM on Programming Languages ​​​​// HOPL. - ACM, 2020. - Vol. 4 . - P. 1-189 . - ISBN 1-58113-329-4 .
  23. Brendan Eich. Popularitate  (engleză) . blog personal (3 apr. 2008). Preluat la 18 martie 2015. Arhivat din original la 16 martie 2015.
  24. Brendan Eich. Noul proprietar al modulului JavaScript Engine  . blog personal (21 iunie 2011). Preluat la 18 martie 2015. Arhivat din original la 21 aprilie 2017.
  25. 1 2 JavaScript. Ghid de buzunar. Cod și comenzi necesare = JavaScript. Dicţionar de expresii. Cod și comenzi esențiale / Christian Wenz; pe. din engleza. I. V. Bershtein . - Moscova, Sankt Petersburg, Kiev: OOO „ID Williams”, 2008. - S. 18. - 272 p. - 2000 de exemplare.  - ISBN 978-5-8459-1186-5 . Arhivat pe 2 aprilie 2015 la Wayback Machine
  26. Paul Crill. Creatorul JavaScript se gândește la trecut, viitor . Brendan Eich de la Mozilla descrie istoria JavaScript, upgrade-ul viitor și dezacordurile cu  Microsoft . InfoWorld (23 iunie 2008) .  - Eich: Așa este. Totul a fost în șase luni din mai până în decembrie (1995) când a fost Mocha și apoi LiveScript. Și apoi, la începutul lunii decembrie, Netscape și Sun au încheiat un acord de licență și a devenit JavaScript." Preluat la 3 mai 2015. Arhivat din original la 20 septembrie 2014.
  27. Bellis, Mary Istoria JavaScript  -ului . Ghidul About.com (30 iunie 2008). Consultat la 18 noiembrie 2009. Arhivat din original la 22 august 2011.
  28. Netscape și Sun anunță Javascript(TM), limbajul de scriptare a obiectelor deschis, cross-platform pentru rețelele de întreprindere și internet  (  link mort) . Netscape Communications, Sun Microsystems. — Anunț JavaScript. Consultat la 17 noiembrie 2009. Arhivat din original pe 16 decembrie 1996.
  29. ↑ Microsoft anunță ActiveX Scripting  . Microsoft (18 iulie 1996). — Anunțul JScript. Consultat la 17 noiembrie 2009. Arhivat din original la 22 august 2011.
  30. Silwa C. Scripting standard vine  //  Network World : revistă. - IDG Network World Inc, 1996. - Vol. 13 , nr. 49 . — P. 10 . Arhivat din original pe 17 mai 2013.
  31. Seebach, Peter Prezentarea ECMAscript . developerWorks Rusia . IBM (13 iunie 2007). Consultat la 19 noiembrie 2009. Arhivat din original pe 22 august 2011.
  32. 1 2 3 Crockford, Douglas Cel mai neînțeles limbaj de programare din lume a devenit cel mai popular limbaj de programare din lume  (Eng.) (3 martie 2008). Consultat la 25 octombrie 2009. Arhivat din original la 22 august 2011.
  33. Indexul comunității de programare TIOBE pentru aprilie  2015 . TIOBE Software BV (aprilie 2015). Consultat la 9 mai 2015. Arhivat din original pe 4 mai 2009.
  34. ↑ Open Source Project Data  . Software-ul Black Duck. Consultat la 25 octombrie 2009. Arhivat din original la 22 august 2011.
  35. JavaScript și PHP folosesc în creștere în sursă deschisă, spune Black Duck  Software . Black Duck Software (12 august 2009). Consultat la 25 octombrie 2009. Arhivat din original la 22 august 2011.
  36. Statistici de utilizare Javascript  . builtwith.com (29 iulie 2010). Data accesului: 29 iulie 2010. Arhivat din original pe 22 august 2011.
  37. Utilizarea limbajelor de programare la nivelul clientului pentru  site-uri web . W³Techs (29 iulie 2010). Data accesului: 29 iulie 2010. Arhivat din original pe 22 august 2011.
  38. Învățarea Javascript cu grafice de obiecte. Obiecte și lanțuri prototip . Preluat la 10 octombrie 2016. Arhivat din original la 27 decembrie 2016.
  39. Învățarea Javascript cu grafice de obiecte (Partea a II-a). Obiecte prototipale pure . Consultat la 10 octombrie 2016. Arhivat din original pe 11 octombrie 2016.
  40. Învățarea Javascript cu grafice de obiecte. Vizualizarea închiderilor . Preluat la 10 octombrie 2016. Arhivat din original la 27 decembrie 2016.
  41. Kris Kowal. Efortul CommonJS stabilește JavaScript pe calea dominației lumii  ( 1 decembrie 2009). Preluat la 1 decembrie 2009. Arhivat din original la 22 august 2011.
  42. Mikkonen T., Taivalsaari A. Utilizarea JavaScript ca limbaj de programare real  . - SUA: Sun Microsystems Laboratories, 2007. Arhivat din original pe 15 iunie 2011.
  43. 1 2 Zakas N. 1. Ce este JavaScript? // JavaScript profesional pentru dezvoltatori web. — Ed. a II-a. - SUA, Canada: Wiley Publishing, Inc., 2009. - P. 3. - ISBN 978-0-470-22780-0 .
  44. 1 2 Zakas, Nicholas Definiții web : DOM, Ajax și multe altele  . Blogul Nicholas Zakas (29 septembrie 2009). - Un articol care clarifică diferența dintre conceptele legate de dezvoltarea web, care, în special, justifică de ce DOM și BOM, împreună cu ECMAScript, sunt considerate părți integrante ale JavaScript. Preluat la 9 decembrie 2009. Arhivat din original la 22 august 2011.
  45. 1 2 3 4 Chapman, Stephen The Browser Object Model. Introducere  (engleză) . Consultat la 1 februarie 2010. Arhivat din original pe 22 august 2011.
  46. Kvk, Raja JavaScript Vs DOM Vs BOM, relație explicată  ( 18 decembrie 2009). Consultat la 18 decembrie 2009. Arhivat din original la 22 august 2011.
  47. Souders S. 1. Înțelegerea performanței AJAX // Site-uri web chiar mai rapide: Cele mai bune practici de performanță pentru dezvoltatorii web. — Ed. I. - SUA: O'Reilly Media, 2009. - P. 1-6. — ISBN 0596522304 .
  48. David Flanagan. 15.4.6. Interfețe DOM independente de limbă // JavaScript. Ghid detaliat = JavaScript. Ghidul definitiv / Traducere de A. Kiselev. - a 5-a ed. - Sankt Petersburg. : „Simbol-Plus” , 2008. - S.  332 -334. — ISBN 5-93286-103-7 .
  49. Stockwell, Christian IE8 Performance  ( 26 august 2008). Consultat la 6 noiembrie 2009. Arhivat din original la 22 august 2011.
  50. Powell T., Schneider F. Chapter 9: JavaScript Object Models // JavaScript 2.0: The Complete Reference . — Ed. a II-a. — SUA: McGraw-Hill/Osborne, 2004. — 976 p. — ISBN 0072253576 .
  51. Chapman, Stephen The Browser Object Model. Elementele de bază  (engleză) . Consultat la 1 februarie 2010. Arhivat din original pe 22 august 2011.
  52. Chapman, Stephen The Browser Object Model  . Preluat la 9 decembrie 2009. Arhivat din original la 22 august 2011.
  53. 1 2 3 Koch P.-P. Capitolul 6. BOM // ppk pe JavaScript . — Ed. I. - New Riders Press, 2006. - 528 p. — ISBN 0321423305 .
  54. 1 2 Zakas N. 8. Modelul obiect al browserului // JavaScript profesional pentru dezvoltatori web. — Ed. a II-a. - SUA, Canada: Wiley Publishing, Inc., 2009. - P. 201-229. - ISBN 978-0-470-22780-0 .
  55. Zakas N. 10. The Document Object Model // Professional JavaScript for Web Developers. — Ed. a II-a. - SUA, Canada: Wiley Publishing, Inc., 2009. - P. 261-317. - ISBN 978-0-470-22780-0 .
  56. 4.11.1 Elementul  script . Specificația HTML5 . W3C (28 octombrie 2014). Consultat la 11 iunie 2015. Arhivat din original pe 13 iunie 2015.
  57. Tipuri  de suporturi de aplicație . Administrarea spațiului de adrese de internet . - Maparea tipurilor de conținut la tipuri MIME. Data accesului: 28 septembrie 2009. Arhivat din original la 22 august 2011.
  58. Wilson B. MAMA:  Structura CAP . Comunitatea dezvoltatorilor Opera . Opera Software (14 noiembrie 2008). — Statistica elementelor utilizate în secțiunea de cap a documentelor web. Consultat la 14 octombrie 2009. Arhivat din original la 22 august 2011.
  59. Lista atributelor  (ing.) . Specificație HTML 4.01 . W3C (24 decembrie 1999). — Tabel rezumat al atributelor HTML. Consultat la 25 septembrie 2009. Arhivat din original la 22 august 2011.
  60. Echipa eyeOS. 5.2 Partea JavaScript și partea PHP // manualul dezvoltatorului eyeos . — P. 23. Arhivat 7 august 2008 la Wayback Machine
  61. David Flanagan. 13.4.1. Bookmarklets // JavaScript. Ghid detaliat = JavaScript. Ghidul definitiv / Traducere de A. Kiselev. - a 5-a ed. - Sankt Petersburg. : „Simbol-Plus” , 2008. - S.  267 . — ISBN 5-93286-103-7 .
  62. Utilizator  javascript . Opera Tutorial . Software Opera. Consultat la 27 noiembrie 2009. Arhivat din original la 22 august 2011.
  63. UJS Manager pentru Opera facilitează gestionarea userscript-urilor  ( 25 noiembrie 2009). Consultat la 27 noiembrie 2009. Arhivat din original la 22 august 2011.
  64. Exemple de utilizare.  Scripturi Greasemonkey . Opera Tutorial . Software Opera. Consultat la 27 noiembrie 2009. Arhivat din original la 22 august 2011.
  65. Scripturi  utilizator . Proiectele Chromium . Consultat la 4 iunie 2010. Arhivat din original pe 22 august 2011.
  66. 1 2 Note  de lansare Java™ SE 6 . Sun Microsystems, Inc. - Analiza codului sursă Mozilla Firefox. Consultat la 19 noiembrie 2009. Arhivat din original pe 22 august 2011.
  67. Creați aplicații întregi folosind JavaScript și  Ajax . Aptana Inc (2009). Preluat la 22 decembrie 2009. Arhivat din original la 22 august 2011.
  68. ↑ Aptana: Ghidul Jaxer : Introducere  . Aptana Inc. Preluat la 22 decembrie 2009. Arhivat din original la 22 august 2011.
  69. Johnson, Ryan Aptana Licență pentru  Jaxer . Depozitul Git de cod sursă . Aptana Inc (12 august 2009). Preluat la 22 decembrie 2009. Arhivat din original la 22 august 2011.
  70. Persevere vă ajută să dezvoltați rapid aplicații de internet bogate bazate pe JavaScript bazate pe date.  (engleză) . Perseverează (2008). Preluat la 22 decembrie 2009. Arhivat din original la 22 august 2011.
  71. kriszyp. Licență  (engleză) . Depozitul SVN cod sursă . Perseverează (31 octombrie 2008). Preluat la 22 decembrie 2009. Arhivat din original la 22 august 2011.
  72. helma.org  . _ Helma.org. Preluat la 22 decembrie 2009. Arhivat din original la 22 august 2011.
  73. ↑ Licența Helma versiunea 2.0  . Helma.org. Preluat la 22 decembrie 2009. Arhivat din original la 22 august 2011.
  74. ↑ Zara , Licență Ondrej . Depozitul SVN cod sursă (3 septembrie 2009). Preluat la 22 decembrie 2009. Arhivat din original la 22 august 2011. 
  75. ↑ Dahl , Ryan Licență  . Depozitul GIT cod sursă (26 mai 2009). Data accesului: 13 ianuarie 2010. Arhivat din original la 22 august 2011.
  76. Yegge, Steve Rhino on Rails  ( 26 iunie 2007). Preluat la 22 decembrie 2009. Arhivat din original la 22 august 2011.
  77. Yegge, Steve Rhinos and Tigers  ( 14 iunie 2008). Preluat la 22 decembrie 2009. Arhivat din original la 22 august 2011.
  78. Kairer, Ryan Palm anunță Palm webOS  ( 8 ianuarie 2009). Consultat la 16 octombrie 2009. Arhivat din original la 22 august 2011.
  79. Tselikov, Dmitry A fost anunțat primul manual de programare în mediul Palm webOS (link inaccesibil) (18 februarie 2009). Consultat la 16 octombrie 2009. Arhivat din original la 16 septembrie 2009. 
  80. Allen M. Palm webOS. — Ed. I. - O'Reilly Media, 2009. - 464 p. - ISBN 978-0-596-15525-4 .
  81. Sunder Pichai, Linus Upson. Vă prezentăm sistemul de operare Google Chrome . Blogul Google Rusia (8 iulie 2009). Consultat la 20 noiembrie 2009. Arhivat din original pe 22 august 2011.
  82. Winship, Dan JavaScript - GNOME live!  (engleză) . gnom. Data accesului: 28 decembrie 2009. Arhivat din original la 22 august 2011.
  83. 1 2 Stich, Christian Prezentarea modelului de obiecte JavaScript pentru serviciile Excel în SharePoint 2010  ( 30 noiembrie 2009). Preluat la 1 decembrie 2009. Arhivat din original la 22 august 2011.
  84. 1 2 Stich, Christian Acces simplu la datele din foile de calcul utilizând API-ul REST Excel Services 2010  ( 4 noiembrie 2009). Preluat la 1 decembrie 2009. Arhivat din original la 22 august 2011.
  85. Dr Mark Alexander Bain. Accesarea OOo IDE // Aflați OpenOffice.org Spreadsheet Macro Programming: OOoBasic and Calc automation / Reviewer: Andrew Pitonyak. — 1-a. - Birmingham: Packt Publishing, 2006. - P. 8-11. — (De la tehnologii la soluții). — ISBN 1847190979 .
  86. 1 2 Scrierea de scripturi Office în JavaScript  . openoffice.org. Preluat la 22 decembrie 2009. Arhivat din original la 22 august 2011.
  87. Scrierea macro-urilor  . openoffice.org. Preluat la 22 decembrie 2009. Arhivat din original la 22 august 2011.
  88. Reed D. Rethinking CS0 with JavaScript  //  Technical Symposium on Computer Science Education. Lucrările celui de-al treizeci și doilea simpozion tehnic SIGCSE privind educația informatică. - Charlotte, Carolina de Nord, Statele Unite: ACM, 2001. - P. 100-104 . - ISBN 1-58113-329-4 .
  89. Drach A.N. Îmbunătățirea competențelor pedagogice în domeniul educației TIC în procesul de predare a JavaScript la ore opționale  // Tehnologii informaționale în educație - 2008: Culegere de lucrări științifice ale participanților la a VII-a conferință-expoziție științifică și practică 30 - 31 octombrie, 2008 .. - Rostov-pe-Don: Rostizdat, 2008. - P. 63 . - ISBN 978-5-7509-0971-1 . Arhivat din original pe 14 mai 2011.
  90. Bosova I.N. Dezvoltarea programelor educaționale în informatică pe bază variabilă și curricule individuale  // Tehnologii informaționale în educație - 2009: Culegere de lucrări științifice ale participanților la a IX-a conferință-expoziție științifică și practică 29 - 30 octombrie 2009 - Rostov-pe-Don: Rostizdat, 2009 - P. 25-26 . - ISBN 978-5-7509-0971-1 . Arhivat din original pe 14 mai 2011.
  91. Wu P. Predarea programării de bază a jocurilor folosind JavaScript  //  Journal of Computing Sciences in Colleges. Lucrări ale celei de-a doua conferințe anuale CCSC Southwestern. - Consorțiul pentru Științe Informatice în Colegii, SUA: ACM, 2009. - Vol. 24 , iss. 4 . - P. 211-220 . — ISSN 1937-4771 .
  92. Zakas, Nikolas Informatică în JavaScript : Lista legată  . Informatică (13 aprilie 2009). Consultat la 12 noiembrie 2009. Arhivat din original pe 22 august 2011.
  93. ↑ Nou în JavaScript 1.6  . Centrul pentru dezvoltatori Mozilla . - Nou în versiunea JavaScript 1.6. Consultat la 5 octombrie 2009. Arhivat din original pe 22 august 2011.
  94. ↑ Nou în JavaScript 1.7  . Centrul pentru dezvoltatori Mozilla . - Nou în versiunea JavaScript 1.7. Consultat la 5 octombrie 2009. Arhivat din original pe 22 august 2011.
  95. Nou în JavaScript 1.8  (engleză)  (downlink) . Centrul pentru dezvoltatori Mozilla . - Nou în versiunea JavaScript 1.8. Consultat la 15 februarie 2010. Arhivat din original pe 22 august 2011.
  96. ↑ Nou în JavaScript 1.8.1  . Centrul pentru dezvoltatori Mozilla . - Nou în versiunea JavaScript 1.8.1. Consultat la 15 februarie 2010. Arhivat din original pe 22 august 2011.
  97. 1 2 Proiectul final al ECMA-262 - standardul limbajului ECMAScript - a fost  publicat . ECMA. — Anunțarea versiunii finale a proiectului celei de-a cincea ediții a ECMA-262. Consultat la 25 septembrie 2009. Arhivat din original la 22 august 2011.
  98. Horwat, Waldemar ES5 este un standard ECMA  . Lista de corespondență Mozilla (4 decembrie 2009). — Notificare privind adoptarea oficială a ECMAScript 5 ca standard ECMA. Consultat la 9 decembrie 2009. Arhivat din original pe 28 iulie 2011.
  99. djwm. Noua versiune de JavaScript a fost aprobată  ( 7 decembrie 2009). Preluat la 9 decembrie 2009. Arhivat din original la 22 august 2011.
  100. ↑ Despre mediul de programare  . Rețeaua de dezvoltatori Microsoft . Microsoft. Consultat la 5 noiembrie 2009. Arhivat din original pe 22 august 2011.
  101. Opera DragonFly . Software Opera. Consultat la 19 decembrie 2009. Arhivat din original la 22 august 2011.
  102. ^ Hatcher, Timothy Introducing Drosera  ( 28 iunie 2006). Consultat la 5 noiembrie 2009. Arhivat din original pe 22 august 2011.
  103. Christian Johansen. Capitolul 1. Testare automată // Dezvoltare JavaScript bazată pe teste . - Addison-Wesley Professional, 2010. - P.  3 . - (tăieturi aspre). - ISBN 0-321-68391-9 , 978-0-321-68391-5.
  104. Christian Johansen. 3.1.4. Caracteristici ale cadrelor de testare xUnit. Runnerul de testare // Dezvoltare JavaScript bazată pe teste . - Addison-Wesley Professional, 2010. - P.  24 , 25. - (Rough Cuts). - ISBN 0-321-68391-9 , 978-0-321-68391-5.
  105. Christian Johansen. 3.3.1. Verificare încrucișată // Dezvoltare JavaScript bazată pe testare . - Addison-Wesley Professional, 2010. - P.  28 . - (tăieturi aspre). - ISBN 0-321-68391-9 , 978-0-321-68391-5.
  106. Christian Johansen. 3.3.2. env.js // Dezvoltare JavaScript bazată pe teste . - Addison-Wesley Professional, 2010. - P.  28 , 29. - (Rough Cuts). - ISBN 0-321-68391-9 , 978-0-321-68391-5.
  107. Christian Johansen. 3.3.3. Blue Ridge // Dezvoltare JavaScript bazată pe teste . - Addison-Wesley Professional, 2010. - P.  29 . - (tăieturi aspre). - ISBN 0-321-68391-9 , 978-0-321-68391-5.
  108. Christian Johansen. 3.3.4. Problema cu alergătorii de testare fără cap // Dezvoltare JavaScript bazată pe teste . - Addison-Wesley Professional, 2010. - P.  29 . - (tăieturi aspre). - ISBN 0-321-68391-9 , 978-0-321-68391-5.
  109. C. Titus Brown, Gheorghe Gheorghiu, Jason Huggins. 3.1. O scurtă istorie a seleniului // O introducere în testarea aplicațiilor web cu twill și seleniu. - O'Reilly Media, Inc., 2007. - 60 p.
  110. Christian Johansen. 3.4. Un singur alergător de testare pentru a-i guverna pe toți // Dezvoltare JavaScript bazată pe teste . - Addison-Wesley Professional, 2010. - P.  29 . - (tăieturi aspre). - ISBN 0-321-68391-9 , 978-0-321-68391-5.
  111. Christian Johansen. 3.4.1. Cum funcționează JsTestDriver // Dezvoltare JavaScript bazată pe teste . - Addison-Wesley Professional, 2010. - P.  29 . - (tăieturi aspre). - ISBN 0-321-68391-9 , 978-0-321-68391-5.
  112. Telecomandă cu seleniu  . seleniumhq.org. Preluat la 16 martie 2010. Arhivat din original la 22 august 2011.
  113. Ismayle de Sousa Santos; Pedro de Alcantara dos Santos Neto. Automatizarea testelor funcționează cu Selenium  (port.) (pdf). Data accesului: 16 martie 2010. Arhivat din original pe 14 martie 2016.
  114. Resig, John TestSwarm  (engleză)  (downlink) (25 august 2009). Preluat la 16 martie 2010. Arhivat din original la 14 februarie 2010.
  115. Christian Johansen. 3.1.6. Dependențe // Dezvoltare JavaScript bazată pe teste . - Addison-Wesley Professional, 2010. - P.  25 . - (tăieturi aspre). - ISBN 0-321-68391-9 , 978-0-321-68391-5.
  116. Christian Johansen. 3.2.1. Test YUI // Dezvoltare JavaScript bazată pe teste . - Addison-Wesley Professional, 2010. - P.  26 . - (tăieturi aspre). - ISBN 0-321-68391-9 , 978-0-321-68391-5.
  117. Christian Johansen. 3.2.2. Alte cadre de testare în browser // Dezvoltare JavaScript bazată pe teste . - Addison-Wesley Professional, 2010. - P.  28 . - (tăieturi aspre). - ISBN 0-321-68391-9 , 978-0-321-68391-5.
  118. Crockford, Douglas The Kid JavaScript Programmer  . — Un articol care dezvăluie relația dintre JavaScript și Scheme. Data accesului: 28 septembrie 2009. Arhivat din original la 22 august 2011.
  119. R. Tolksdorf, Limbaje de programare pentru JavaScript  . is-cercetare (19 iulie 2009). — O selecție de implementări ale limbajului de programare JavaScript. Recuperat la 12 octombrie 2009. Arhivat din original pe 22 august 2011.
  120. hotruby. Ruby pe JavaScript și  Flash . Consultat la 12 octombrie 2009. Arhivat din original la 22 august 2011.
  121. Cooper P. HotRuby : O mașină virtuală JavaScript și Flash care rulează Ruby  . Ruby Inside (26 martie 2008). Consultat la 12 octombrie 2009. Arhivat din original la 22 august 2011.
  122. Schuster W. HotRuby - Interpret de cod operațional Ruby 1.9 /YARV în Javascript  . infoQ (27 martie 2008). — Descrierea HotRuby.. Consultat la 12 octombrie 2009. Arhivat din original pe 22 august 2011.
  123. Formiga, Andrei s-mr.  Rinocerul făcut singur . Preluat la 9 decembrie 2009. Arhivat din original la 22 august 2011.
  124. Hlavaty, Tom WPS: PostScript pentru Web  . Consultat la 12 octombrie 2009. Arhivat din original la 22 august 2011.
  125. 6502asm.com - 6502 asamblator și emulator compatibil în  javascript . Consultat la 12 octombrie 2009. Arhivat din original la 22 august 2011.
  126. Cappuccino Web Framework - Construiți aplicații de clasă desktop în Objective-J și  JavaScript . Consultat la 12 octombrie 2009. Arhivat din original la 22 august 2011.
  127. Yhc/Javascript/Scurtă  prezentare generală . Consultat la 12 octombrie 2009. Arhivat din original la 22 august 2011.
  128. Monash Toy  Prolog . Consultat la 12 octombrie 2009. Arhivat din original la 22 august 2011.
  129. ioctls. Prolog în  JavaScript . Consultat la 12 octombrie 2009. Arhivat din original la 22 august 2011.
  130. ↑ Online Cat Interpreter  . Consultat la 12 octombrie 2009. Arhivat din original la 22 august 2011.
  131. BiwaScheme  . _ Preluat la 29 martie 2018. Arhivat din original la 22 august 2011.
  132. Strom, Nikko About Quite BASIC  ( 2006). Consultat la 12 octombrie 2009. Arhivat din original la 22 august 2011.
  133. ↑ Orcutt , Bill Despre Lily  . Consultat la 12 februarie 2010. Arhivat din original pe 22 august 2011.
  134. Jacobson, Kyle wForth - A JavaScript Forth Interpreter  ( 3 decembrie 2008). Consultat la 12 februarie 2010. Arhivat din original pe 22 august 2011.
  135. phype  . _ code.google.com. Consultat la 12 februarie 2010. Arhivat din original pe 22 august 2011.
  136. Compilatorul Oberon 07  . Preluat la 29 martie 2018. Arhivat din original la 11 iunie 2018.
  137. ↑ Informații pachet : HTML_Javascript  . PEAR - Extensie PHP și depozit de aplicații . Consultat la 12 octombrie 2009. Arhivat din original la 22 august 2011.
  138. TCLLIB - Biblioteca standard Tcl:  javascript . Consultat la 12 octombrie 2009. Arhivat din original la 22 august 2011.
  139. Date::  JavaScript . Rețea cuprinzătoare de arhive Perl . Consultat la 12 octombrie 2009. Arhivat din original la 22 august 2011.
  140. Zakas N. Suport ECMAScript în browsere web // JavaScript profesional pentru dezvoltatori web. — Ed. a II-a. - SUA, Canada: Wiley Publishing, Inc., 2009. - P. 5, 6. - ISBN 978-0-470-22780-0 .
  141. Suport  ECMAScript pentru browser web . Preluat la 28 octombrie 2009. Arhivat din original la 22 august 2011.
  142. Suport DOM pentru browser web  . Preluat la 28 octombrie 2009. Arhivat din original la 22 august 2011.
  143. Crill, Paul . Eich: JavaScript devine mai rapid, ar putea înlocui Flash , InfoWorld (6 noiembrie 2009). Arhivat din original pe 9 noiembrie 2009. Recuperat la 11 noiembrie 2009.
  144. Walden, Jeff Verificați corectitudinea SpiderMonkey pe cadrul de testare Sputnik  . Sistem de urmărire a erorilor pentru produsele Mozilla Bugzilla (29 iunie 2009). — Raportarea erorilor în SpiderMonkey . Consultat la 27 noiembrie 2009. Arhivat din original pe 7 noiembrie 2011.
  145. ↑ Blandy , Jim Integrate Google Sputnik test suite  . Sistem de urmărire a erorilor pentru produsele Mozilla Bugzilla (30 iunie 2009). — O propunere de integrare a Sputnik-ului în infrastructura de testare Mozilla . Consultat la 27 noiembrie 2009. Arhivat din original pe 7 noiembrie 2011.
  146. 1 2 Hansen, Christian Plesner Lansarea Sputnik-ului pe orbită  ( 29 iunie 2009). — Anunțul Sputnik, un instrument pentru testarea conformității cu specificația ECMAScript a implementărilor de limbaj. Consultat la 27 noiembrie 2009. Arhivat din original la 22 august 2011.
  147. Zaytsev, Juriy Sputniktests web runner  (engleză)  (link indisponibil) (9 noiembrie 2009). — Investigarea conformității browserului cu specificația ECMAScript. Consultat la 27 noiembrie 2009. Arhivat din original pe 13 noiembrie 2009.
  148. djwm. Google lansează suita de testare rulabilă pentru browser ECMAScript/  JavaScript . h-online.com (11 martie 2010). Preluat la 12 martie 2010. Arhivat din original la 22 august 2011.
  149. Taft, Darryl K. Cum se comportă IE 8?  (engleză) . eWeek (11 martie 2010). — Un articol care prezintă rezultatele unui studiu realizat de inginerii Google privind corectitudinea suportării browserului pentru JavaScript, bazat pe testarea cu Sputnik. Preluat la 12 martie 2010. Arhivat din original la 22 august 2011.
  150. allenwb. ECMAScript 5 Conformance Suite  (engleză) (1 iulie 2009). Preluat la 9 decembrie 2009. Arhivat din original la 22 august 2011.
  151. Oiaga, Marius Microsoft lansează teste pentru evoluția JavaScript  ( 30 iunie 2009). Preluat la 9 decembrie 2009. Arhivat din original la 22 august 2011.
  152. allenwb. Suita de conformitate ECMAScript 5. Versiunea 0.2. Pagina de descărcare  (în engleză) (13 septembrie 2009). Preluat la 12 martie 2010. Arhivat din original la 22 august 2011.
  153. Clary, Bob JavaScript Test Suite  (ing.)  (link mort) (3 octombrie 2004). Preluat la 9 decembrie 2009. Arhivat din original la 22 august 2011.
  154. Begle, Christine JavaScript Test Library  (  link inaccesibil) . Preluat la 9 decembrie 2009. Arhivat din original la 22 august 2011.
  155. 1 2 Flanagan D. 13.8.1. Ce nu poate JavaScript // JavaScript. Ghid detaliat = JavaScript. Ghidul definitiv / Traducere de A. Kiselev. - a 5-a ed. - Sankt Petersburg. : „Simbol-Plus” , 2008. - S.  280 , 281. - ISBN 5-93286-103-7 .
  156. Flanagan D. 13.8.2. Politica de origine comună // JavaScript. Ghid detaliat = JavaScript. Ghidul definitiv / Traducere de A. Kiselev. - a 5-a ed. - Sankt Petersburg. : "Simbol-Plus" , 2008. - S.  281 -283. — ISBN 5-93286-103-7 .
  157. Vulnerabilitatea Mozilla Cross-Site Scripting raportată și  remediată . MozillaZine (28 februarie 2004). Consultat la 24 noiembrie 2009. Arhivat din original pe 22 august 2011.
  158. Kottelin, Thor Faceți clic dreapta pe „protecție”? Uită de asta  (în engleză)  (link indisponibil) (17 iunie 2008). Consultat la 24 noiembrie 2009. Arhivat din original pe 22 august 2011.
  159. Habryn, Mikolaj J. Buffer overflow in crypto.signText()  (Eng.) (1 martie 2006). Consultat la 24 noiembrie 2009. Arhivat din original pe 22 august 2011.
  160. Festa, Paul Buffer-overflow bug in IE  ( 19 august 1998). Consultat la 24 noiembrie 2009. Arhivat din original pe 22 august 2011.
  161. Apple Safari JavaScript Buffer Overflow permite utilizatorilor de la distanță să execute cod arbitrar și erori de redirecționare HTTP Permite utilizatorilor de la distanță să acceseze fișierele  ( 2 martie 2006). Consultat la 24 noiembrie 2009. Arhivat din original pe 18 februarie 2010.
  162. Farrell, Nick Dezactivați din nou Javascript în IE  ( 24 noiembrie 2009). Consultat la 24 noiembrie 2009. Arhivat din original pe 22 august 2011.
  163. Utilizator Web. Microsoft emite sfaturi privind erorile IE  ( 24 noiembrie 2009). Preluat la 24 noiembrie 2009. Arhivat din original la 9 august 2021.
  164. hdm. Vulnerabilitatea Microsoft WebViewFolderIcon ActiveX Control Buffer Overflow  ( 17 iulie 2006). Consultat la 24 noiembrie 2009. Arhivat din original pe 22 august 2011.
  165. Macromedia Flash Activex Buffer Overflow  ( 1 martie 2002). Consultat la 24 noiembrie 2009. Arhivat din original pe 22 august 2011.
  166. Au fost descoperite vulnerabilități zero-day în extensiile Firefox  ( 20 noiembrie 2009). Consultat la 24 noiembrie 2009. Arhivat din original pe 22 august 2011.
  167. Manion, Art Microsoft Internet Explorer nu validează corect sursa cadrului redirecționat  ( 3 iunie 2004). Consultat la 24 noiembrie 2009. Arhivat din original la 30 octombrie 2009.
  168. Escaladarea privilegiilor prin înlocuiri de proprietate DOM  (engleză) (2005). Consultat la 24 noiembrie 2009. Arhivat din original pe 22 august 2011.
  169. Canavan, John JS.Seeker.K  (ing.) (1 octombrie 2003). Consultat la 24 noiembrie 2009. Arhivat din original pe 22 august 2011.

Specificații

  1. nodejs/node-eps . GitHub . Preluat la 5 iulie 2018. Arhivat din original la 29 august 2020.
  2. TC39. 4. Prezentare generală // Specificația limbajului ECMAScript . — Ed. a 5-a. - 2009. - P. 1, 2. Copie de arhivă din 12 aprilie 2015 la Wayback Machine
  3. ↑ Document Object Model (DOM ) Level 3 Core Specification  . W3C (7 aprilie 2004). Consultat la 6 noiembrie 2009. Arhivat din original la 22 august 2011.
  4. HTML5. Proiect de standard - 8 decembrie 2009  (engleză) . W3C (8 decembrie 2009). Preluat la 9 decembrie 2009. Arhivat din original la 22 august 2011.
  5. Window Object 1.0 W3C Working Draft 07 aprilie  2006 . W3C (7 aprilie 2006). Preluat la 9 decembrie 2009. Arhivat din original la 22 august 2011.
  6. 18.2.1 Elementul SCRIPT . Specificația HTML 5 . W3C (18 decembrie 2013). Consultat la 18 iunie 2013. Arhivat din original pe 22 august 2011.
  7. 18.2.3  Evenimente intrinseci . Specificație HTML 4.01 . W3C (24 decembrie 1999). Consultat la 15 noiembrie 2009. Arhivat din original pe 22 august 2011.
  8. 4.11.1 Elementul  script . Specificația HTML5 . W3C (28 octombrie 2014). Consultat la 11 iunie 2015. Arhivat din original pe 13 iunie 2015.
  9. TC39. Introducere // Specificația limbajului ECMAScript . — Ed. a 5-a. — 2009. Arhivat 12 aprilie 2015 la Wayback Machine

Comentarii

  1. C#, PHP, Perl, Python, Java.
  2. Disponibil ca bibliotecă JSAN separată .
  3. Cu toate acestea, acest lucru nu ne împiedică să considerăm DOM-ul ca parte integrantă a unui limbaj, aplicație sau bibliotecă. De exemplu, când descrie obiectivele ES-Harmony, Brendan Eich afirmă ca unul dintre obiectivele creării limbajului că ar trebui să fie potrivit pentru crearea de biblioteci care, printre altele, pot include DOM.
  4. Proiectul „Computer science in JavaScript” Arhivat pe 17 septembrie 2009 la Wayback Machine include un set de paradigme clasice , algoritmi și abordări scrise în JavaScript și disponibile sub licența MIT .

Link -uri

Documentație

Referințe

Resurse tematice

Bloguri ale unor autori celebri de cărți JavaScript