JavaScript

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 11. maj 2022; checks kræver 22 redigeringer .
JavaScript
Sprog klasse

multiparadigme : objektorienteret ( prototypisk ), generaliseret , funktionel , imperativ , aspektorienteret ,

begivenhedsdrevet programmering
Udførelsestype fortolkning, oversættelse til Java bytecode [ 1] , JIT til native kode [2]
Dukkede op i 1995
Forfatter Brendan Eich
Filtypenavn _ .js, .cjs, .mjs[Спецификация 1]
Frigøre ECMAScript 2022 [3]  (juni 2022 ) ( 2022-06 )
Type system dynamisk , and
Større implementeringer SpiderMonkey , Rhino , KJS (JavaScript) , JavaScriptCore , V8
Blev påvirket Lua , Self [4] , C , Scheme [4] , Perl [4] , Python , Java [4] , AWK [4] , HyperTalk [4]
påvirket Objective-J , Dart , TypeScript
 Mediefiler på Wikimedia Commons
JavaScript
Udvidelse .js[7]
MIME -type tekst/javascript, applikation/javascript [5] [6]
offentliggjort september 1995 [8]
Formattype tekstfil med kildekode
Udvidet fra ECMAScript
 Mediefiler på Wikimedia Commons

JavaScript ( / ˈ dʒ ɑː v ɑː ˌ s k r ɪ p t / ; forkortelse JS /ˈdʒeɪ.ɛs./ ) er et multiparadigme programmeringssprog . Understøtter objektorienterede , imperative og funktionelle stilarter. Det er en implementering af ECMAScript - specifikationen (ECMA-262 [9] standard ).

JavaScript er almindeligvis brugt som et integreret sprog til programmatisk adgang til applikationsobjekter . Det er mest udbredt i browsere som et scriptsprog til at gøre websider interaktive [10] .

Vigtigste arkitektoniske funktioner: dynamisk indtastning , svag indtastning , automatisk hukommelsesstyring , prototypisk programmering , fungerer som førsteklasses objekter .

JavaScript er blevet påvirket af mange sprog, og målet var at få sproget til at ligne Java. JavaScript er ikke ejet af nogen virksomhed eller organisation, hvilket adskiller det fra en række programmeringssprog, der bruges i webudvikling [~ 1] [11] .

Navnet "JavaScript" er et amerikansk registreret varemærke tilhørende Oracle Corporation [ 12] .

I 1992 begyndte Nombas ( efterfølgende erhvervet af Openwave ) at udvikle et integreret scriptsprog Cmm (C-minus-minus), som ifølge udviklerne skulle være kraftigt nok til at erstatte makroer , samtidig med at ligheden med C bevaredes. , så udviklere nemt kan lære det [13] . Den største forskel fra C var hukommelseshåndtering. I det nye sprog blev al hukommelsesstyring udført automatisk: der var ingen grund til at oprette buffere , deklarere variabler og udføre typekonvertering. I andre henseender lignede sprogene hinanden meget: især Cmm understøttede standardfunktioner og C-operatorer [14] . Cmm blev omdøbt til ScriptEase , fordi det oprindelige navn lød for negativt, og omtalen af ​​C i det "skræmte" folk [13] [15] . Baseret på dette sprog blev det proprietære produkt CEnvi oprettet . I slutningen af ​​november 1995 udviklede Nombas en version af CEnvi , der er indlejret i websider. Siderne, der kunne ændres ved hjælp af scriptsproget, blev kaldt Espresso Pages  , som demonstrerede brugen af ​​scriptsproget til at skabe et spil, validere brugerinput i formularer og skabe animationer. Espresso Pages blev placeret som en demo for at hjælpe med at forestille sig, hvad der ville ske, hvis Cmm- sproget blev implementeret i browseren . De fungerede kun i 16-bit Netscape Navigator under Windows [16] .

Den allerførste JavaScript-implementering blev skabt af Brendan Eich hos Netscape og er siden blevet opdateret til at overholde ECMA-262 Edition 5 og senere. Denne motor kaldes SpiderMonkey og er implementeret i C/ C++ . Rhino-motoren blev skabt af Norris Boyd og implementeret i Java. Ligesom SpiderMonkey overholder Rhino ECMA-262 Edition 5.   

JavaScript

Brendan Eich , ansat af Netscape den 4. april 1995 [18] , fik til opgave at bringe Scheme -programmeringssproget eller noget lignende ind i Netscape-browseren. Da kravene blev sløret, blev Eich flyttet til Server Products-gruppen, hvor han brugte en måned på at forbedre HTTP-protokollen [18] . I maj blev udvikleren overført tilbage til klient-siden (browser) teamet, hvor han straks begyndte at udvikle konceptet med et nyt programmeringssprog. Browserudviklingsledelse, inklusive Tom Paquin , Michael Toy , Rick Schell , var overbevist om, at Netscape skulle understøtte et programmeringssprog indlejret i sidens HTML-kode [ 19 ] .  

Ud over Brendan Eich deltog [18 ] Netscape Communications medstifter [20] Mark Andressen og Sun Microsystems medstifter Bill Joy i udviklingen : for at have tid til at afslutte arbejdet med sproget til udgivelsen af ​​browseren , indgik virksomhederne en udviklingssamarbejdsaftale [21] . De satte sig det mål at give et "sprog til at lime" de bestanddele af en webressource: billeder, plug-ins, Java-applets, hvilket ville være praktisk for webdesignere og programmører, som ikke har høje kvalifikationer [18] .

Sproget hed oprindeligt Mocha [23] [24] [25] efter forslag fra Mark Andreessen [22] , blev implementeret af Brendan Eich inden for ti dage, og blev først inkluderet i pre-alpha versionen af ​​Netscape 2 [22] . Derefter blev det omdøbt til LiveScript [25] [26] og var beregnet til både klient-side programmering og server-side programmering (hvor det skulle hedde LiveWire) [21] . Syntaksen var påvirket af C- og Java-sprogene , og da Java var et buzzword på det tidspunkt [18] [21] , blev LiveScript omdøbt til JavaScript [27] den 4. december 1995 , licenseret fra Sun. JavaScript-meddelelsen fra Netscape og Suns repræsentanter fandt sted på tærsklen til udgivelsen af ​​den anden betaversion af Netscape Navigator [18] . Den erklærer, at 28 førende it-virksomheder har udtrykt deres hensigt om at bruge JavaScript som et åbent standard-objekt-scriptsprog i deres fremtidige produkter [28] .

I 1996 udgav Microsoft en analog af JavaScript-sproget kaldet JScript . Dette sprog blev annonceret den 18. juli 1996 [29] . Den første browser, der understøttede denne implementering, var Internet Explorer 3.0.

På initiativ af Netscape [30] [31] blev sproget standardiseret af ECMA - foreningen . Den standardiserede version kaldes ECMAScript , beskrevet af ECMA-262- standarden . Den første version af specifikationen svarede til JavaScript version 1.1, samt sprogene JScript og ScriptEasy [13] [21] .

Popularitet

I Verdens mest misforståede programmeringssprog  er blevet verdens mest populære programmeringssprog  [ 32] argumenterer  Douglas Crockford for, at den førende position JavaScript har overtaget på grund af udviklingen af ​​AJAX , da browseren er blevet det fremherskende applikationsleveringssystem. Han bemærker også den voksende popularitet af JavaScript, det faktum, at dette sprog er indlejret i applikationer, understreger betydningen af ​​sproget.

Ifølge TIOBE-indekset , baseret på Google , MSN , Yahoo! , Wikipedia og YouTube , i april 2015 lå JavaScript på 6. pladsen (for et år siden - på 9.) [33] .

Ifølge Black Duck Software [34] har brugen af ​​JavaScript været stigende inden for open source-softwareudvikling . 36 % af projekterne udgivet mellem august 2008 og august 2009 involverer JavaScript, det mest almindeligt anvendte programmeringssprog med hastigt voksende popularitet. 80 % af open source-software bruger C, C++, Java, Shell og JavaScript. JavaScript er dog det eneste af disse sprog, hvis andel af brugen er steget (mere end 2 procent, hvis du tæller i kodelinjer) [35] .

JavaScript er det mest populære programmeringssprog, der bruges til at udvikle webapplikationer på klientsiden [36] [37] .

Sprogfunktioner

JavaScript er et objektorienteret sprog, men den prototyping , der bruges i sproget [38] [39] forårsager forskelle i arbejdet med objekter sammenlignet med traditionelle klasseorienterede sprog. Derudover har JavaScript en række egenskaber iboende i funktionelle sprog  - fungerer som førsteklasses objekter, objekter som lister, currying , anonyme funktioner , lukninger [40]  - hvilket giver sproget yderligere fleksibilitet.

På trods af den samme syntaks som C, har JavaScript grundlæggende forskelle sammenlignet med C-sproget :

Sproget mangler sådanne nyttige ting [41] som:

Semantik og syntaks

Syntaksen i JavaScript minder meget om den i C og Java , men semantisk er sproget meget tættere på Self , Smalltalk eller endda Lisp [32] [42] [Specifikation 2] .

I JavaScript:

Sprogets struktur

Strukturelt kan JavaScript repræsenteres som en forening af tre adskilte dele [43] [44] [45] [46] :

Når JavaScript overvejes i ikke-browsermiljøer, understøttes browserobjektmodellen og dokumentobjektmodellen muligvis ikke [45] .

Dokumentobjektmodellen opfattes nogle gange som en separat enhed fra JavaScript [47] [48] [Specifikation 3] , hvilket er i overensstemmelse med definitionen af ​​DOM som en sproguafhængig dokumentgrænseflade [49] [~ 3] . I modsætning hertil finder en række forfattere, at BOM og DOM er tæt beslægtede [50] [51] .

Core

ECMAScript er ikke et browsersprog og definerer ikke input- og outputmetoder [43] . Det er snarere grundlaget for at bygge scriptsprog. ECMAScript-specifikationen beskriver datatyper, instruktioner, nøgleord, reserverede ord, operatorer , objekter, regulære udtryk uden at begrænse forfattere af afledte sprog fra at udvide dem med nye komponenter.

Browserobjektmodel

Browserobjektmodellen er en browserspecifik del af sproget [45] [52] , der er et lag mellem kernen og dokumentobjektmodellen [53] . Det primære formål med browserobjektmodellen er at administrere og interagere med browservinduer. Hvert af browservinduerne er repræsenteret af et objekt window, det centrale DOM-objekt. Browserobjektmodellen er i øjeblikket ikke standardiseret [45] [54] , men en specifikation er under udvikling af WHATWG [53] [Spec 4] og W3C [44] [Spec 5] .

Ud over at administrere vinduer giver browsere i browserobjektmodellen typisk support til følgende entiteter [53] [54] :

  • rammestyring , _
  • understøttelse af forsinkelse i kodeudførelse og looping med forsinkelse,
  • systemdialoger,
  • håndtering af adressen på den åbne side,
  • administration af browserinformation,
  • overvåge parameterinformationsstyring ,
  • begrænset håndtering af browserhistorik,
  • understøttelse af arbejde med HTTP-cookies .
Dokumentobjektmodellen

Document Object Model er en applikationsprogrammeringsgrænseflade til HTML- og XML - dokumenter [55] . Ifølge DOM kan et dokument (for eksempel en webside) repræsenteres som et træ af objekter, der har en række egenskaber, der giver dig mulighed for at udføre forskellige manipulationer med det:

  • generere og tilføje noder,
  • få noder,
  • node ændring,
  • ændring af forbindelser mellem noder,
  • fjernelse af noder.

Indlejring i websider

Placering på siden

For at tilføje JavaScript-kode til en side kan du bruge <script></script>[Specifikation 6] tags , som anbefales, men ikke påkrævet, placeret inde i <head>. Der kan være et hvilket som helst antal containere <script>i ét dokument. Attributten type="text/javascript"er valgfri, denne værdi bruges som standard [56] .

Et script, der viser et modalt vindue med den klassiske inskription "Hello, World!" inde i browseren:

< script type = "applikation/javascript" > advarsel ( 'Hej, verden!' ); </ script >


Placering i tagget

HTML-specifikationen beskriver et sæt attributter, der bruges til at definere hændelseshandlere [Specifikation 7] . Eksempel på brug:

< a href = "delete.php" onclick = "confirm('Er du sikker?'); return false;" > Slet </a> _ _

I ovenstående eksempel, når du klikker på linket, confirm('Вы уверены?');kalder funktionen et modalt vindue frem med inskriptionen "Er du sikker?", men return false;blokerer overgangen til linket. Denne kode vil selvfølgelig kun virke, hvis browseren har og JavaScript-understøttelse aktiveret, ellers vil linket blive fulgt uden varsel.

Brug af JavaScript-kode i forbindelse med sidemarkering betragtes som dårlig praksis inden for diskret JavaScript . Analog (forudsat at linket er forsynet med en identifikator alertLink)

<a id="alertLink"> _ _ _ _ Slet </a> _ _

Ovenstående eksempel kan for eksempel være følgende JavaScript-kodestykke:

vindue . onload = () => { const linkWithAlert = dokument . getElementById ( 'alertLink' ); linkWithAlert . addEventListener ( 'klik' , async () => { if ( bekræft ( 'Er du sikker?' )) { await fetch ( 'delete' , { method : 'DELETE' }) } }) }; Flytter til en separat fil

Der er en tredje måde at forbinde JavaScript på - skriv et script i en separat fil, og tilslut det derefter ved hjælp af konstruktionen

< body > < script type = "application/javascript" src = "http://Path_to_coscript_file" > </ script > </ body > Attributter for scriptelementet

Script-elementet, der er meget brugt til at oprette forbindelse til en JavaScript-side, har flere attributter.

RFC - 4329- arbejdsforslaget, der definerer [57] en MIME-type, der er i overensstemmelse med JavaScript, siger :

[5]

medietyper

  • application/javascript,
  • application/ecmascript,

som også er defineret i dette dokument, er beregnet til praktisk brug og bør foretrækkes.

Originaltekst  (engelsk)[ Visskjule] Brug af "tekst"-topniveautypen til denne type indhold er kendt for at være problematisk. Dette dokument definerer text/javascriptog text/ecmascriptmarkerer dem således som "forældede". Brug af eksperimentelle og uregistrerede medietyper, som angivet delvist ovenfor, frarådes.

medietyperne,

  • application/javascript
  • application/ecmascript
som også er defineret i dette dokument, er beregnet til almindelig brug og bør bruges i stedet.
  • valgfri attribut src, der tager adressen til filen med scriptet som værdi.
  • en valgfri attribut charset, der bruges med srctil at angive kodningen af ​​den eksterne fil, der skal bruges.
  • den valgfrie attribut deferangiver, at scriptet modtages asynkront, men udførelsen bør forsinkes, indtil hele siden er blevet indlæst.
  • en valgfri attribut asyncangiver, at scriptet modtages asynkront, og udførelsen vil blive udført umiddelbart efter, at overførslen er fuldført. Den rækkefølge, som scripts udføres i, er ikke garanteret.

Samtidig er language ( language="JavaScript") attributten, på trods af dens aktive brug (i 2008 var denne attribut den mest brugte attribut for <script>[58] tag ), forældet, er ikke i DTD og anses derfor for at være forkert [ 59] .

Omfang

Webapplikationer

JavaScript bruges i klientsiden af ​​webapplikationer: klient-server-programmer, hvor browseren er klienten og webserveren er serveren, med logik fordelt mellem serveren og klienten. Udvekslingen af ​​information i webapplikationer foregår over netværket. En fordel ved denne tilgang er, at klienter er uafhængige af brugerens bestemte operativsystem, så webapplikationer er tjenester på tværs af platforme.

AJAX

JavaScript bruges i AJAX , en populær tilgang til at bygge interaktive brugergrænseflader til webapplikationer, der involverer en asynkron "baggrundskommunikation" mellem browseren og webserveren. Som et resultat heraf genindlæses websiden ikke fuldstændigt ved opdatering af data, og webapplikationsgrænsefladen bliver hurtigere, end den ville være med den traditionelle tilgang (uden at bruge AJAX).

Komet

Comet er et bredt begreb, der beskriver, hvordan webapplikationer fungerer ved hjælp af vedvarende HTTP-forbindelser, som gør det muligt for en webserver at sende data til en browser uden yderligere anmodning fra browseren. Disse applikationer bruger teknologier, der understøttes direkte af browsere. Især gør de udstrakt brug af JavaScript.

Browser operativsystemer

JavaScript er meget udbredt i browseroperativsystemer . Så for eksempel er IndraDesktop WebOS -kildekoden 75 % JavaScript, IntOS- browserens operativsystemkode  er 70 %. Andelen af ​​JavaScript i kildekoden til eyeOS  er 5 %, men selv i dette operativsystem spiller JavaScript en vigtig rolle, idet det deltager i gengivelsen på klienten og er en nødvendig mekanisme til at kommunikere mellem klienten og serveren [60 ] .

Bogmærker

JavaScript bruges til at lave små programmer, der er bogmærket i browseren. Dette bruger URL'er med javascript:[61] specifikationen .

Brugerscripts i browseren

Browserbrugerscripts er JavaScript-programmer, der kører i brugerens browser, når en side indlæses. De giver dig mulighed for automatisk at udfylde formularer, omformatere sider, skjule uønsket indhold og integrere indhold, som du vil vise, ændre adfærden på klientsiden af ​​webapplikationer, tilføje kontrolelementer til siden og så videre.

Mozilla Firefox bruger Greasemonkey -udvidelsen til at administrere brugerscripts ; Opera [62] [63] [64] og Google Chrome [65] giver support til brugerscripts og muligheden for at udføre en række Greasemonkey-scripts.

Serverapplikationer

Programmer skrevet i JavaScript kan køre på servere, der kører Java 6 og nyere [66] . Denne omstændighed bruges til at bygge serverapplikationer, der tillader JavaScript at blive behandlet på serversiden.

Ud over Java 6 er der en række platforme, der bruger eksisterende JavaScript-motorer (tolke) til at køre serverapplikationer. (Som regel taler vi om at genbruge motorer, der tidligere er oprettet til at udføre JavaScript-kode i WWW-browsere.)

Javascript Server Application Execution Frameworks
Navn JavaScript-motor brugt Sprog, som motoren og platformen er skrevet på Licens
Jaxer [67] Spider Monkey [68] C++, C GPL 3 [69]
vedholde rammer [70] næsehorn Java Ændret BSD-licens [71]
Helma [72] næsehorn Java, JavaScript BSD-lignende Helma License 2.0 [73]
v8cgi V8 C++, JavaScript BSD-licens [74]
node.js V8 C++ MIT-licens [75]
gopherjs BSD-licens

Server-side JavaScript bruges i Google -projekter [76] . For eksempel tillader Google Sites tilpasning ved hjælp af JavaScript-scripts udført af Rhino-motoren [77] .

Mobilapps

Overgangen af ​​Palm mobile enheder til at bruge Palm webOS som operativsystem med Mojo SDK som et udviklingssæt [78] gør det muligt at bruge JavaScript som et mobilapplikationsudviklingssprog [79] [80] .

Widgets

En widget er et ekstra miniprogram, hvis grafiske modul er placeret i arbejdsområdet i det tilsvarende overordnede program , som tjener til at dekorere arbejdsområdet, underholde, løse individuelle arbejdsopgaver eller hurtigt få information fra internettet uden ved hjælp af en webbrowser. JavaScript bruges både til at implementere widgets og til at implementere widgetmotorer. Især Apple Dashboard , Microsoft Gadgets , Yahoo! Widgets , Google Gadgets , Klipfolio Dashboard .

Applikationssoftware

JavaScript bruges til at skrive applikationssoftware . For eksempel er 16,4 % af Mozilla Firefox -kildekoden skrevet i JavaScript.

Google Chrome OS bruger webapplikationer som applikationssoftware [81] .

GNOME -skrivebordsmiljøet har evnen til at skabe JavaScript-programmer, der fungerer på GNOME-bibliotekerne ved hjælp af Gjs , Seed [82] .

Application Object Manipulation

JavaScript finder også anvendelse som et scriptsprog til at få adgang til applikationsobjekter. Mozilla-platformen ( XUL / Gecko ) bruger JavaScript. Blandt tredjepartsprodukter har Java for eksempel inkluderet en indbygget Rhino - baseret JavaScript-fortolker siden version 6 [66] . JavaScript-scripting er understøttet i Adobe-programmer såsom Adobe Photoshop , Adobe Dreamweaver , Adobe Illustrator og Adobe InDesign .

Office-applikationer

JavaScript bruges i kontorapplikationer til at automatisere rutinehandlinger, skrive makroer og organisere adgang fra webtjenester.

Microsoft Office

Excel Services 2010 tilføjede [83] to nye applikationsprogrammeringsgrænseflader: REST API og JavaScript Object Model ( JSOM ).

  • Excel Services 2010 REST API giver [84] adgang til projektmappeobjekter såsom tabeller, diagrammer og navngivne dataserier; få billeder, HTML, Atom , projektmapper; indstille værdier og opdatere beregninger, før du forespørger på elementer [84] .
  • JSOM gør det muligt at reagere på brugerhandlinger i forhold til Excel Web Access ( EWA ), programmatisk interagere med EWA-komponenter. Brug af JSOM gøres ved at placere JavaScript-kode på en side, der indeholder EWA-komponenter [83] .
OpenOffice.org

JavaScript er et af de programmeringssprog, der bruges til at skrive makroer i applikationer, der er en del af OpenOffice.org [85] . OpenOffice.org integrerer Rhino JavaScript-fortolkeren [86] . Fra december 2009 var JavaScript-understøttelse begrænset. Begrænsninger iboende i [86] udvikling af OpenOffice.org-makroer i JavaScript:

  • JavaScript-runtiden understøtter kun indlæsning af Java-klasser, der er implementeret af et JavaScript-script.
  • JavaScript runtime giver ikke fejlmeddelelser, der opstår under scriptudførelse;
  • understøttelse af interaktiv JavaScript-udvikling er endnu ikke implementeret.

OpenOffice.org har en JavaScript-editor og debugger [87] .

Uddannelse i datalogi

JavaScript har propædeutisk værdi, hvilket tillader en kombination af intensiv programmeringspraksis og bredden af ​​teknologier, der bruges til undervisning i datalogi [88] . At undervise i dette sprog på skolen giver dig mulighed for at skabe en base for at lære webprogrammering , bruge kreative projekter i klasseværelset [89] . Det tilsvarende kursus giver dig mulighed for at give et dybtgående studie af datalogi, og det giver mening at inkludere det i valgfrie kurser på et dybtgående uddannelsesniveau [90] .

JavaScript er et egnet sprog til at lære spilprogrammering . Sammenlignet med alternativer er det funktionelt tilstrækkeligt, nemt at lære og bruge, reducerer kompleksiteten for læring, motiverer elever til at dele deres spil med andre [91] .

Dele om implementering i JavaScript af klassiske algoritmer , teknikker, datastrukturer , som ikke er inkluderet i Nicholas Zakas ' bog "Professional JavaScript for Web Developers" , tjente [92] som begyndelsen på Computer science in JavaScript -projektet [~ 4] .

Versioner

JavaScript Tilsvarende JScript-version Væsentlige ændringer
1.0 ( Netscape 2.0, marts 1996) 1.0 (tidlige versioner af IE 3.0, august 1996) Den originale version af JavaScript-sproget.
1.1 (Netscape 3.0, august 1996) 2.0 (senere versioner af IE 3.0, januar 1997) I denne version blev objektet implementeret, Arrayog de mest alvorlige fejl blev rettet.
1.2 (Netscape 4.0, juni 1997) Implementeret switch switch, regulære udtryk. Praktisk taget bragt i overensstemmelse med den første udgave af ECMA-262-specifikationen.
1.3 (Netscape 4.5, oktober 1998) 3.0 (IE 4.0, oktober 1997) Kompatibel med den første udgave af ECMA-262.
1.4 (kun Netscape Server) 4.0 ( Visual Studio 6, ingen IE-version) Gælder kun for Netscape-serverprodukter.
5.0 (IE 5.0, marts 1999)
5.1 (IE 5.01)
1.5 (Netscape 6.0, november 2000; også
senere versioner af Netscape og Mozilla )
5.5 (IE 5.5, juli 2000) Revision 3 (december 1999). Kompatibel med den tredje udgave af ECMA-262-specifikationen.
5.6 (IE 6.0, oktober 2001)
1.6 ( Gecko 1.8, Firefox 1.5, nov. 2005) Revision 3 med nogle kompatible forbedringer: E4X , tilføjelser til Array(f.eks. Array.prototype.forEach), forenklinger til Arrayog String[93]
1.7 (Gecko 1.8.1, Firefox 2.0, efterår 2006), JavaScript-udvidelse 1.6 Revision 3, tilføjelse af alle forbedringerne fra JavaScript 1.6, generatorer og listeforståelser fra Python , blokomfang ved brug af og destrukturering af tildeling ( ) [ 94] . [a*a for (a in iter)]letvar [a, b] = [1, 2]
JScript .NET ( ASP.NET ; ingen IE-version) (JScript .NET menes at være udviklet med bidrag fra andre ECMA- medlemmer )
1.8 (Gecko 1.9, Firefox 3.0, efterår 2008), JavaScript-udvidelse 1.7 Ny notation for funktioner, der ligner typiske lambda-udtryk , generatorer , nye metoder til iterativ array-behandling reduce()og reduceRight()[95] .
1.8.1 (Gecko 1.9.1, Firefox 3.5) Native JSON-understøttelse, getPrototypeOf()y- metode, , , y- Objectmetoder [96]trim()trimLeft()trimRight()String
2.0 Revision 4 (igangværende arbejde [97] , titel reserveret af ECMA, men ikke brugt til offentliggørelse [Specifikation 9] )
Revision 5 (tidligere kendt som ECMAScript 3.1 [97] . Afsluttet 3. december 2009 [98] [99] .)

JavaScript-biblioteker

For at give et højt abstraktionsniveau og opnå en acceptabel grad af cross-browser-kompatibilitet bruges JavaScript-biblioteker i udviklingen af ​​webapplikationer. De er en samling af genanvendelige genstande og funktioner. Bemærkelsesværdige JavaScript-biblioteker omfatter React.js , Vue.js , Ember.js , Adobe Spry , AngularJS , Svelte , Dojo , , jQuery , Mootools , Prototype , Qooxdoo og Underscore .


Debugging

I JavaScript bliver adgang til debuggere særlig nyttig, når der udvikles store, ikke-trivielle programmer på grund af forskelle i implementeringer på tværs af browsere (især med hensyn til Document Object Model ). Mange browsere har en indbygget debugger.

Internet Explorer har tre debuggere: Microsoft Visual Studio  er den mest komplette, efterfulgt af Microsoft Script Editor (en komponent i Microsoft Office [100] ), og endelig den gratis Microsoft Script Debugger, meget enklere end de to andre. Den gratis Microsoft Visual Web Developer Express giver en begrænset version med en JavaScript-fejlfindingsfunktion i Microsoft Visual Studio. I den ottende version af IE, sammen med værktøjer til udviklere, dukkede en indbygget debugger op.

Opera har også sin egen debugger, Opera Dragonfly [101] .

Webapplikationer, du udvikler i Firefox , kan fejlsøges ved hjælp af de indbyggede Firefox-udviklerværktøjer.

Safari inkluderer JavaScript WebKit Web Inspector [102] debugger . Den samme debugger er også tilgængelig i andre browsere, der bruger WebKit : Google Chrome, Arora , Rekonq , Midori , osv.

Testværktøjer

De fleste automatiserede testrammer for JavaScript-kode kræver, at du kører dine tests i browseren. Dette gøres ved hjælp af en HTML-side, der er testkonteksten , som igen indlæser alt det nødvendige for at udføre testen. De første sådanne rammer var JsUnit (oprettet i 2001), Selenium (oprettet i 2004) [103] . Et alternativ er at køre test fra kommandolinjen. I dette tilfælde bruges ikke-browsermiljøer såsom Rhino [104] . Et af de første værktøjer af denne art er Crosscheck, som giver dig mulighed for at teste kode ved at emulere adfærden i Internet Explorer 6 og Firefox version 1.0 og 1.5 [105] . Et andet eksempel på en automatiseret testramme for JavaScript-kode, der ikke bruger en browser til at køre test, er biblioteket env.js, der er oprettet af John Resig. Den bruger Rhino og indeholder emulering af browsermiljøet og DOM [106] .

Blue Ridge, et plugin til Ruby on Rails webapplikationsramme , giver dig mulighed for at enhedsteste JavaScript-kode både ind og ud af browseren. Dette opnås ved at bruge Screw.Units automatiserede testramme og Rhino med env.js [107] .

Hovedproblemet med testsystemer uden browser er, at de bruger emuleringer i stedet for de faktiske miljøer, hvor koden udføres. Dette fører til, at en vellykket beståelse af tests ikke garanterer, at koden fungerer korrekt i browseren [108] [109] . Problemet med at teste systemer, der bruger en browser, er kompleksiteten af ​​at arbejde med dem, behovet for at udføre rutinemæssige ikke-automatiserede handlinger [110] . For at løse dette bruger JsTestDriver, en automatiseret testramme udviklet af Google, en server, der kommunikerer med browsere til at udføre test [111] . Selenium Remote Control, en del af Seleniums automatiserede testramme, opfører sig på en lignende måde: den inkluderer en server, der starter og stopper browsere og fungerer som en HTTP-proxy for anmodninger til dem [112] . Derudover indeholder Selenium Selenium Grid, som giver dig mulighed for samtidigt at teste JavaScript-kode på forskellige computere med forskellige miljøer, hvilket reducerer testudførelsestiden [113] . Understøttet af QUnit ( jQuery library ), UnitTestJS ( Prototype library ), JSSpec ( MooTools library ), JsUnit, Selenium og Dojo Objective Harness JavaScript automatiserede testrammer, Testswarm er en distribueret kontinuerlig integrationsunderstøttelse [114] .

En negativ egenskab, som en JavaScript-kodetestramme kan have, er tilstedeværelsen af ​​afhængigheder. Dette skaber en risiko for, at koden under test, der består testene, fejler i et miljø, der ikke har disse afhængigheder. For eksempel var den originale version af JsUnitTest, den ramme, der blev oprettet og brugt til at teste Prototype-biblioteket, af Prototype selv for at ændre egenskaberne for objekter i det globale omfang [115] . At inkludere et testværktøj i et JavaScript-bibliotek er en almindelig praksis. Så YUI Test 3 er en del af Yahoo! UI-bibliotek og kan sikkert bruges til at teste vilkårlig JavaScript-kode [116] . QUnit er en automatiseret testramme skabt af udviklerne af jQuery [117] .

Forholdet til andre sprog

Gensidig indflydelse

Standardiseringen af ​​JavaScript krævede, at varemærkeproblemer blev undgået, så ECMA 262-standarden kalder sproget ECMAScript, hvoraf tre revisioner er blevet offentliggjort, siden arbejdet begyndte i november 1996.

Objective-J  er et strengt, kompakt supersæt af JavaScript, der tilføjer JavaScript:

Microsofts VBScript kan ligesom JavaScript køres på klientsiden på websider. VBScript har en syntaks afledt af Visual Basic og understøttes kun i Internet Explorer .

JSON eller JavaScript Object Notation er et dataudvekslingsformat til generelle formål defineret som en delmængde af JavaScript.

Scheme er også et søstersprog til JavaScript, fordi begge giver rige funktionelle programmeringsfunktioner: JavaScript er et dynamisk sprog, understøtter fleksible arrays, kan nemt simulere s-udtryk og har understøttelse af lambda-udtryk [118] .

JavaScript og Java

En almindelig misforståelse er, at JavaScript ligner eller er tæt beslægtet med Java , det er det ikke [32] . Begge sprog har en C-lignende syntaks, er objektorienterede og har tendens til at blive brugt i vid udstrækning i webapplikationer på klientsiden. Vigtige forskelle omfatter:

  • Java implementerer en OOP-tilgang baseret på klasser , JavaScript-on- prototyper ;
  • Java er statisk skrevet , JavaScript er dynamisk skrevet ;
  • Java indlæses fra kompileret bytekode; JavaScript tolkes direkte fra filen (men ofte med en subtil JIT - kompilering).

Implementering

JavaScript implementerer tolkene af en række programmeringssprog, hvilket gør det muligt at bruge en webbrowser som runtime for dem. De kan for eksempel bruges til uddannelsesformål [119] .

HotRuby er en gratis implementering af Ruby virtuelle maskine i JavaScript og Flash . Giver dig mulighed for at udføre bytekode , der stammer fra YARV- kompilering . Implementerer det meste af Ruby-grammatikken. Undtagelsesmekanismen og de fleste af de indbyggede funktioner og klasser er endnu ikke implementeret [120] . Med HotRuby kan du bruge ruby-scripts på websider. For at gøre dette skal rubinkode placeres i en blok:

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

HotRuby vil udpakke det, sende det til et fjernscript til kompilering og derefter vise resultaterne på [121] -siden . Denne implementering tillader adgang fra Ruby til JavaScript-objekter [122] .

Tabel over implementeringer af JavaScript-programmeringssprog
Sprog Implementeringsnavn Hovedforfattere Licens
JavaScript s-mr [123] Andrei Formiga NyBSD
efterskrift WPS [124] Tom Hlavaty ?
PDF
Assembler til MOS Technology 6502 6502asm [125] Stian Soreng GPL
Mål-J Cappuccino [126] Ross Boucher LGPL
Haskell ycr2js [127] Tom Shackell, Neil Mitchell, Andrew Wilkinson, Mike Dodds, Bob Davie, Dimitry Golubovsky simpel tilladelig licens
Prolog Monash Toy Prolog [128] Lloyd Allison ?
ioctls [129] Jan Grant ?
kat Kattetolk [130] Christopher Diggins offentligt domæne
Ordning BiwaScheme [131] Yutaka Hara MIT
GRUNDLÆGGENDE Ganske BASIC [132] Nikko Strøm gratis proprietær
Lily Lily [133] Bill Orcutt MIT
Frem wForth [134] K Jacobsen ?
PHP phype [135]
Python 3 PyPy.js ? ?
Oberon 07 oberonjs [136] Vlad Folts MIT

Interaktion

Nogle programmeringssprog giver support til at interagere med JavaScript-kode.

  • PHP har en HTML Javascript-pakke, der giver en grænseflade til at skabe simple JavaScript-programmer [ 137] .
  • Den tilsvarende pakke til Tcl hedder ::javascript. Det giver HTML- og JavaScript-kodegenereringskommandoer [138] .
  • Perl Data::JavaScript - pakken giver dig mulighed for at portere Perl-datastrukturer til JavaScript-kode [139] .

Browser support

Til dato er JavaScript-understøttelse leveret af moderne versioner af alle de mest almindeligt anvendte browsere. Internet Explorer , Opera , Mozilla Firefox , Safari , Google Chrome har fuld understøttelse af 3. udgave ECMA-262. Samtidig forsøgte Mozilla Firefox at implementere understøttelse af den fjerde udgave af specifikationen, og den første browser, hvori ufuldstændig understøttelse af 3.1-specifikationen dukkede op, var Internet Explorer 8 [140] .

Fejl begået af udviklere af populære browsere i implementeringen af ​​specifikationen er normalt mindre [141] . Fra november 2009 har dokumentobjektmodellen mere begrænset understøttelse [142] .

Ifølge skaberen af ​​sproget kan Microsofts understøttelse i Internet Explorer af en af ​​de hurtige JavaScript-motorer , der findes og bruges i andre browsere , føre til fremkomsten af ​​applikationer, der arbejder med tredimensionel grafik , 3D-spil skrevet i JavaScript, brug af JavaScript i opgaver, der tidligere brugte teknologien Adobe Flash [143] .

Test suiter

Regressionstest af browser-overensstemmelse med den tredje udgave af ECMA-262-specifikationen kan udføres [144] [145] ved hjælp af det Google-udviklede værktøj til test af overensstemmelse med ECMAScript-specifikationen Sputnik , som omfatter mere end fem tusinde test cases [146] og blev opkaldt efter det russiske Google-team [146] såvel som sputniktests-webrunner [147] shell skrevet af Yuri Zaitsev eller Google -tjenesten [148] . Testcases inkluderet i Sputnik bliver opdateret i forbindelse med udgivelsen af ​​den femte udgave af ECMA-262-specifikationen, hvilket afspejler ændringer i forhold til dens tidligere udgave [149] .

ECMAScript 5 Conformance Suite [150] er en testpakke udgivet af Microsoft under BSD-licensen [151] for at verificere, at en implementering af ECMAScript-sproget er i overensstemmelse med dens femte udgavespecifikation. Pr. 12. marts 2010 var der 1236 testcases i pakken, den havde version 0.2 alpha og antallet af downloads på tre måneder var 178 [152] .

Mozillas [153] [154] JavaScript Test Suite er tilgængelig til at teste rigtigheden af ​​JavaScript-implementeringer .

Sikkerhed

JavaScript tillader potentielle forfattere af ondsindet kode at køre den på enhver computer på netværket ved blot at åbne en webside på den. Dette resulterer i to grundlæggende begrænsninger:

  • JavaScript-programmer kører i en sandkasse , hvor de kun kan udføre et begrænset antal handlinger, og ikke programmeringsopgaver til generelle formål (for eksempel oprettelse af filer, arbejde med sockets ) [155] .
  • for JavaScript-kode anvendes domænebegrænsningsreglen , ifølge hvilken et script, der er indlejret på en side, ikke kan få adgang til en række egenskaber for objekter på en anden side (især de fleste af et objekts egenskaber document), hvis protokollen , værten og portnummeret på disse sider er forskelligt [ 156] .

Derudover indfører browserleverandører yderligere begrænsninger som reaktion på misbrug, der finder sted. Sådan fremstod især forbuddet mod at åbne et vindue, hvis størrelse på den ene side er mindre end hundrede pixels [155] .

Sårbarheder på tværs af websteder

Et almindeligt problem med JavaScript er cross-site scripting eller XSS, en overtrædelse af domænebegrænsningsreglen. XSS-sårbarheder opstår i situationer, hvor en angriber har mulighed for at placere script på en side, der vises til brugeren. I dette tilfælde får scriptet adgang til webstedet med denne brugers rettigheder, hvilket i nogle tilfælde åbner muligheden for at sende fortrolige oplysninger og foretage uønskede transaktioner .

XSS-sårbarheder opstår også på grund af fejl begået af browserudviklere [157] .

En anden type sårbarhed på tværs af websteder er forfalskning af anmodninger på tværs af websteder eller CSRF. Det ligger i angriberens websteds evne til at tvinge brugerens browser til at udføre en uønsket handling på målstedet (for eksempel en bankoverførsel af penge). Dette er muligt, hvis målwebstedet kun er afhængigt af HTTP-cookies eller godkendelsesanmodninger. I dette tilfælde udføres anmodninger initieret af angriberens webstedskode på samme måde som brugeranmodninger, hvis han er autoriseret på målstedet. Et af midlerne til beskyttelse mod CSRF er at udføre autentificering på enhver anmodning, der fører til irreversible konsekvenser. Parsing af HTTP-henvisningen kan også hjælpe .

Misplaceret tillid på klientsiden

Udviklere af klientapplikationer, uanset om de bruger JavaScript eller ej, skal være opmærksomme på, at sidstnævnte kan være under kontrol af angribere. Derfor kan enhver kontrol på klientsiden omgås, JavaScript kan enten køre eller ej. Sløret kode kan omvendt manipuleres ; formulardata kan sendes til serveren uden JavaScript- validering ; scripts kan deaktiveres delvist, så for eksempel kan pålidelig beskyttelse mod at gemme billeder ved hjælp af JavaScript ikke implementeres [158] ; det er ekstremt uforsigtigt at indlejre adgangskoden i JavaScript, der kører på klienten, hvor den kan findes af en angriber.

Bugs i browseren, plugins og udvidelser

JavaScript giver en grænseflade til en lang række browserfunktioner, hvoraf nogle kan indeholde fejl såsom bufferoverløb . Dette giver dig mulighed for at skrive scripts, der får vilkårlig kode til at blive eksekveret på brugerens system.

Lignende fejl er blevet fundet i almindeligt anvendte browsere, herunder Mozilla Firefox [159] , Internet Explorer [160] og Safari [161] . Når man identificerer potentielt farlige fejl i browseren og har oplysninger om implementerede udnyttelser , anbefaler producenten og sikkerhedseksperter at deaktivere JavaScript før udgivelsen af ​​patchen [162] [163] .

Plugins såsom afspillere , Macromedia Flash og en række ActiveX - komponenter, der er tilgængelige som standard i Internet Explorer, kan også indeholde fejl, der er udnyttet med JavaScript, som det er sket før [164] [165] .

Mozilla Firefox-udvidelser er ikke isoleret fra hinanden: en udvidelse kan rette en anden, som kan udnyttes af angribere. På SecurityByte & Owasp AppSec Asia 2009 demonstrerede Roberto Suggi Liverani og Nick Freeman tre udnyttelser i populære Firefox-udvidelser, downloadet over 30 millioner gange fra webstedet [166] .

Sandbox implementeringsfejl

Browsere kan køre JavaScript uden for sandkassen med de nødvendige privilegier til for eksempel at oprette og slette filer. Sådanne privilegier bør dog ikke gives til kode fra nettet.

Ukorrekte rettigheder til JavaScript fra nettet har været årsagen til sårbarheder i både Internet Explorer [167] og Mozilla Firefox [168] .

Microsoft Windows tillader JavaScript-filer at køre som almindelige programmer uden at være sandboxed. Dette gør det muligt at oprette trojanske heste [169] .

Litteratur

  • Fowler, Martin. Refactoring JavaScript Code: Improving the Design of Existing Code, 2nd Ed. - M . : "Dialektik" , 2019. - 464 s. - ISBN 978-5-907144-59-0 .
  • McFarland, David. JavaScript og jQuery: The Definitive Guide. - M . : "Dialektik" , 2015. - 880 s. - ISBN 978-5-699-79119-4 .
  • Morgan, Nick. Javascript for børn. - M. , 2016. - 288 s. - ISBN 978-5-00100-295-6 .
  • Duckett, John. Javascript og jQuery. Interaktiv webudvikling. - M. , 2017. - 640 s. - ISBN 978-5-699-80285-2 .
  • Resig John, Bibo Bear, Maras Josip. Javascript Ninja Secrets 2. udg. - M . : "Dialectics" , 2017. - 544 s. - ISBN 978-5-9908911-8-0 .
  • Nixon R. Opbygning af dynamiske hjemmesider med PHP, MySQL, JavaScript, CSS og HTML5. 4. udg. - St. Petersborg .. - M . : "Dialektik" , 2016. - 768 s. - ISBN 978-5-496-02146-3 .
  • Flavaran, David. JavaScrirt: Pocket Reference, 3. udg. - M. , 2013. - 320 s. - ISBN 978-5-8459-1830-7 .

Se også

Noter

  1. Alexey White. Større JavaScript-motorer // JavaScript Programmers reference . - Indianapolis, IN 46256: Wiley Publishing, Inc., 2009. - S.  12-13 . - (Programmer's Reference). — ISBN 978-0-470-34472-9 .
  2. Nicholas C. Zakas. Næste generations JavaScript-motorer // Højtydende JavaScript / Redaktør: Mary E. Treseler. — 1. udg. - 1005 Gravenstein Highway North, Sebastopol, CA 95472: O'Reilly Media , 2010. - P. xiii. - ISBN 978-0-596-80279-0 .
  3. ECMA-262 . Arkiveret fra originalen den 9. april 2022. Hentet 10. april 2022.
  4. 1 2 3 4 5 6 _ Axel Rauschmayer. The Nature of JavaScript // At tale JavaScript . — Første udgave. - O'Reilly Media, 2014. - S. 41. - ISBN 978-1-449-36503-5 . Arkiveret 10. maj 2015 på Wayback Machine
  5. 1 2 Hoehrmann B. RFC4329  (eng.) (txt). Arbejdsgruppe for netværksteknologier under den særlige kommission for internetudvikling (april 2006). — Tekst til RFC4329-arbejdsforslag. Dato for adgang: 28. september 2009. Arkiveret fra originalen 22. august 2011.
  6. ↑ 18.2.1 SCRIPT-  elementet . HTML 4.01-specifikation . W3C (24. december 1999). — Beskrivelse af Script-elementet. Hentet 25. september 2009. Arkiveret fra originalen 22. august 2011.
  7. Miller M., Borins M., Bynens M., Farias B. Opdateringer til ECMAScript-medietyper  (engelsk) - IETF , 2022. - doi:10.17487/RFC9239
  8. https://web.archive.org/web/20070916144913/http://wp.netscape.com/newsref/pr/newsrelease67.html - 1995.
  9. ECMAScript-sprogspecifikation . Hentet 8. december 2009. Arkiveret fra originalen 12. april 2015.
  10. Flanagan D. JavaScript. Lommeguide. Gør dine websider interaktive! / Oversættelse af A.G. Sysonyuk. - Moskva.: Williams Publishing House, 2015. - S. 320. - 1000 eksemplarer.  - ISBN 978-5-8459-1948-9 (russisk).
  11. D. Reisig. 4. Debugging og testværktøjer // JavaScript. Professionelle programmeringsteknikker = Pro JavaScript™-teknikker / Oversat af N. Vilchinsky. - Sankt Petersborg. : Peter , 2008. - S. 76. - (Programmer's Library). - 2500 eksemplarer.  - ISBN 978-5-91180-904-1 .
  12. USPTO Ophavsretsindlæg #75026640 . USPTO. Hentet 9. april 2020. Arkiveret fra originalen 23. april 2012.
  13. 1 2 3 Historie om  scripting . nombas. Arkiveret fra originalen den 2. februar 2006.
  14. Ford S., Wells D., Wells N. Web Programming Languages  ​​( 1. september 1997). Hentet 17. november 2009. Arkiveret fra originalen 22. august 2011.
  15. Zakas, Nicholas Historie og udvikling af  Javascript . Hentet 17. november 2009. Arkiveret fra originalen 22. august 2011.
  16. Noorda, Brent information blitz  ( 27. november 1995). — Side, der indeholder et brev fra Nombas præsident Brent Noord, der annoncerer Espresso Pages. Hentet 17. november 2009. Arkiveret fra originalen 22. august 2011.
  17. JavaScript. Brugerbibel = JavaScript. Bibelen / Danny Goodman, Michael Morrison; om. fra engelsk. I. V. Vasilenko . - 5. udg. - Moskva, Skt. Petersborg, Kiev: Dilectics, 2006. - S. 3, 26. - 1184 s. - 3000 eksemplarer.  — ISBN 5-8459-1027-7 . Arkiveret 2. april 2015 på Wayback Machine
  18. 1 2 3 4 5 6 Hamilton, Naomi Programmeringssprogenes AZ:  JavaScript . a-z af programmeringssprog . ComputerWorld (31. juli 2008). Hentet 18. november 2009. Arkiveret fra originalen 22. august 2011.
  19. Eich, Brendan Popularity  (engelsk)  (link ikke tilgængeligt) (3. april 2008). Hentet 18. november 2009. Arkiveret fra originalen 7. april 2008.
  20. Frommer, Dan Marc Andreessen slutter sig til Facebook Board  ( 30. juni 2008). Hentet 18. november 2009. Arkiveret fra originalen 22. august 2011.
  21. 1 2 3 4 Zakas N. En kort historie // Professionel JavaScript for webudviklere. — 2. udg. - USA, Canada: Wiley Publishing, Inc., 2009. - S. 1, 2. - ISBN 978-0-470-22780-0 .
  22. 1 2 Allen Wirfs-Brock, Brendan Eich. JavaScript: de første 20 år  //  Proceedings of the ACM on Programming Languages ​​// HOPL. - ACM, 2020. - Vol. 4 . - S. 1-189 . - ISBN 1-58113-329-4 .
  23. Brendan Eich. Popularitet  (engelsk) . personlig blog (3. april 2008). Hentet 18. marts 2015. Arkiveret fra originalen 16. marts 2015.
  24. Brendan Eich. Ny JavaScript Engine  Modulejer . personlig blog (21. juni 2011). Hentet 18. marts 2015. Arkiveret fra originalen 21. april 2017.
  25. 1 2 JavaScript. Lommeguide. Nødvendig kode og kommandoer = JavaScript. Parlør. Væsentlig kode og kommandoer / Christian Wenz; om. fra engelsk. I. V. Bershtein . - Moskva, St. Petersborg, Kiev: OOO "ID Williams", 2008. - S. 18. - 272 s. - 2000 eksemplarer.  - ISBN 978-5-8459-1186-5 . Arkiveret 2. april 2015 på Wayback Machine
  26. Paul Crill. JavaScript-skaber overvejer fortid, fremtid . Mozillas Brendan Eich beskriver JavaScripts historie, den kommende opgradering og uenigheder med  Microsoft . InfoWorld (23. juni 2008) .  - Eich: Det er rigtigt. Det var alt sammen inden for seks måneder fra maj til december (1995), at det var Mokka og derefter LiveScript. Og så i begyndelsen af ​​december lavede Netscape og Sun en licensaftale, og det blev JavaScript." Hentet 3. maj 2015. Arkiveret fra originalen 20. september 2014.
  27. Bellis, Mary JavaScripts historie  . About.com Guide (30. juni 2008). Hentet 18. november 2009. Arkiveret fra originalen 22. august 2011.
  28. Netscape og Sun annoncerer Javascript(TM), det åbne scriptsprog på tværs af platforme til virksomhedsnetværk og internettet  (  dødt link) . Netscape Communications, Sun Microsystems. — JavaScript-meddelelse. Hentet 17. november 2009. Arkiveret fra originalen 16. december 1996.
  29. ↑ Microsoft annoncerer ActiveX Scripting  . Microsoft (18. juli 1996). — Meddelelse om JScript. Hentet 17. november 2009. Arkiveret fra originalen 22. august 2011.
  30. Silwa C. Scripting standard kommer  //  Network World: magazine. - IDG Network World Inc., 1996. - Vol. 13 , nr. 49 . — S. 10 . Arkiveret fra originalen den 17. maj 2013.
  31. Seebach, Peter Introduktion til ECMAscript . developerWorks Rusland . IBM (13. juni 2007). Hentet 19. november 2009. Arkiveret fra originalen 22. august 2011.
  32. 1 2 3 Crockford, Douglas Verdens mest misforståede programmeringssprog er blevet verdens mest populære programmeringssprog  (eng.) (3. marts 2008). Hentet 25. oktober 2009. Arkiveret fra originalen 22. august 2011.
  33. TIOBE Programming Community Index for april  2015 . TIOBE Software BV (april 2015). Hentet 9. maj 2015. Arkiveret fra originalen 4. maj 2009.
  34. ↑ Open Source projektdata  . Black Duck Software. Hentet 25. oktober 2009. Arkiveret fra originalen 22. august 2011.
  35. JavaScript og PHP-brug vokser i Open Source, siger Black Duck  Software . Black Duck Software (12. august 2009). Hentet 25. oktober 2009. Arkiveret fra originalen 22. august 2011.
  36. Javascript-  brugsstatistik . builtwith.com (29. juli 2010). Dato for adgang: 29. juli 2010. Arkiveret fra originalen 22. august 2011.
  37. Brug af programmeringssprog på klientsiden til  websteder . W³Techs (29. juli 2010). Dato for adgang: 29. juli 2010. Arkiveret fra originalen 22. august 2011.
  38. Lære Javascript med objektgrafer. Objekter og prototypekæder . Hentet 10. oktober 2016. Arkiveret fra originalen 27. december 2016.
  39. Lære Javascript med objektgrafer (del II). Rene prototypiske objekter . Hentet 10. oktober 2016. Arkiveret fra originalen 11. oktober 2016.
  40. Lære Javascript med objektgrafer. Visualisering af lukninger . Hentet 10. oktober 2016. Arkiveret fra originalen 27. december 2016.
  41. Kris Kowal. CommonJS-indsats sætter JavaScript på vej mod verdensherredømme  ( 1. december 2009). Hentet 1. december 2009. Arkiveret fra originalen 22. august 2011.
  42. Mikkonen T., Taivalsaari A. Brug af JavaScript som et rigtigt programmeringssprog  . - USA: Sun Microsystems Laboratories, 2007. Arkiveret fra originalen den 15. juni 2011.
  43. 1 2 Zakas N. 1. Hvad er JavaScript? // Professionel JavaScript til webudviklere. — 2. udg. - USA, Canada: Wiley Publishing, Inc., 2009. - S. 3. - ISBN 978-0-470-22780-0 .
  44. 1 2 Zakas, Nicholas Webdefinitioner : DOM, Ajax og mere  . Nicholas Zakas blog (29. september 2009). - En artikel, der tydeliggør forskellen mellem begreber relateret til webudvikling, hvilket især begrunder, hvorfor DOM og BOM sammen med ECMAScript betragtes som integrerede dele af JavaScript. Hentet 9. december 2009. Arkiveret fra originalen 22. august 2011.
  45. 1 2 3 4 Chapman, Stephen Browserobjektmodellen. Introduktion  (engelsk) . Hentet 1. februar 2010. Arkiveret fra originalen 22. august 2011.
  46. Kvk, Raja JavaScript Vs DOM Vs BOM, forhold forklaret  ( 18. december 2009). Hentet 18. december 2009. Arkiveret fra originalen 22. august 2011.
  47. Souders S. 1. Understanding AJAX Performance // Even Faster Web Sites: Performance Best Practices for webudviklere. — 1. udg. - USA: O'Reilly Media, 2009. - S. 1-6. — ISBN 0596522304 .
  48. David Flanagan. 15.4.6. Sproguafhængige DOM-grænseflader // JavaScript. Detaljeret vejledning = JavaScript. Den bestemte guide / Oversat af A. Kiselev. - 5. udg. - Sankt Petersborg. : "Symbol-Plus" , 2008. - S.  332 -334. — ISBN 5-93286-103-7 .
  49. Stockwell, Christian IE8 Performance  ( 26. august 2008). Hentet 6. november 2009. Arkiveret fra originalen 22. august 2011.
  50. Powell T., Schneider F. Kapitel 9: JavaScript-objektmodeller // JavaScript 2.0: Den komplette reference . — 2. udg. — USA: McGraw-Hill/Osborne, 2004. — 976 s. — ISBN 0072253576 .
  51. Chapman, Stephen Browserobjektmodellen. Grundlæggende  (engelsk) . Hentet 1. februar 2010. Arkiveret fra originalen 22. august 2011.
  52. Chapman, Stephen Browserobjektmodellen  . Hentet 9. december 2009. Arkiveret fra originalen 22. august 2011.
  53. 1 2 3 Koch P.-P. Kapitel 6. BOM // ppk på JavaScript . — 1. udg. - New Riders Press, 2006. - 528 s. — ISBN 0321423305 .
  54. 1 2 Zakas N. 8. Browserobjektmodellen // Professionel JavaScript for webudviklere. — 2. udg. - USA, Canada: Wiley Publishing, Inc., 2009. - S. 201-229. - ISBN 978-0-470-22780-0 .
  55. Zakas N. 10. Dokumentobjektmodellen // Professionel JavaScript for webudviklere. — 2. udg. - USA, Canada: Wiley Publishing, Inc., 2009. - S. 261-317. - ISBN 978-0-470-22780-0 .
  56. 4.11.1  Scriptelementet . HTML5-specifikation . W3C (28. oktober 2014). Hentet 11. juni 2015. Arkiveret fra originalen 13. juni 2015.
  57. Anvendelsesmedietyper  . _ Administration af internetadresserum . - Tilknytning af indholdstyper til MIME-typer. Dato for adgang: 28. september 2009. Arkiveret fra originalen 22. august 2011.
  58. Wilson B. MAMA:  HOVEDstruktur . Opera-udviklerfællesskab . Opera-software (14. november 2008). — Statistik over brugte elementer i hovedsektionen af ​​webdokumenter. Hentet 14. oktober 2009. Arkiveret fra originalen 22. august 2011.
  59. Liste over attributter  (eng.) . HTML 4.01-specifikation . W3C (24. december 1999). — Oversigtstabel over HTML-attributter. Hentet 25. september 2009. Arkiveret fra originalen 22. august 2011.
  60. eyeOS Team. 5.2 JavaScript-siden og PHP-siden // eyeos udviklermanual . — S. 23. Arkiveret 7. august 2008 på Wayback Machine
  61. David Flanagan. 13.4.1. Bogmærker // JavaScript. Detaljeret vejledning = JavaScript. Den bestemte guide / Oversat af A. Kiselev. - 5. udg. - Sankt Petersborg. : "Symbol-Plus" , 2008. - S.  267 . — ISBN 5-93286-103-7 .
  62. Bruger  javascript . Opera tutorial . Opera software. Hentet 27. november 2009. Arkiveret fra originalen 22. august 2011.
  63. UJS Manager for Opera gør det nemt at administrere brugerscripts  ( 25. november 2009). Hentet 27. november 2009. Arkiveret fra originalen 22. august 2011.
  64. Eksempler på brug.  Greasemonkey scripts . Opera tutorial . Opera software. Hentet 27. november 2009. Arkiveret fra originalen 22. august 2011.
  65. Brugerscripts  . _ Chromium-projekterne . Hentet 4. juni 2010. Arkiveret fra originalen 22. august 2011.
  66. 1 2 Java™ SE 6 Release Notes  . Sun Microsystems, Inc. - Analyse af Mozilla Firefox kildekode. Hentet 19. november 2009. Arkiveret fra originalen 22. august 2011.
  67. Opret hele apps ved hjælp af JavaScript og  Ajax . Aptana Inc (2009). Hentet 22. december 2009. Arkiveret fra originalen 22. august 2011.
  68. ↑ Aptana: Jaxer Guide : Introduktion  . Aptana Inc. Hentet 22. december 2009. Arkiveret fra originalen 22. august 2011.
  69. Johnson, Ryan Aptana License for  Jaxer . Kildekode Git repository . Aptana Inc (12. august 2009). Hentet 22. december 2009. Arkiveret fra originalen 22. august 2011.
  70. Persevere hjælper dig med hurtigt at udvikle datadrevne JavaScript-baserede rige internetapplikationer.  (engelsk) . Hold ud (2008). Hentet 22. december 2009. Arkiveret fra originalen 22. august 2011.
  71. kriszyp. Licens  (engelsk) . Kildekode SVN repository . Hold ud (31. oktober 2008). Hentet 22. december 2009. Arkiveret fra originalen 22. august 2011.
  72. helma.org  . _ Helma.org. Hentet 22. december 2009. Arkiveret fra originalen 22. august 2011.
  73. ↑ Helma Licens version 2.0  . Helma.org. Hentet 22. december 2009. Arkiveret fra originalen 22. august 2011.
  74. ↑ Zara , Ondrej- licens  . Kildekode SVN repository (3. september 2009). Hentet 22. december 2009. Arkiveret fra originalen 22. august 2011.
  75. ↑ Dahl , Ryan Licens  . Kildekode GIT repository (26. maj 2009). Dato for adgang: 13. januar 2010. Arkiveret fra originalen 22. august 2011.
  76. Yegge, Steve Rhino on Rails  ( 26. juni 2007). Hentet 22. december 2009. Arkiveret fra originalen 22. august 2011.
  77. Yegge, Steve Rhinos and Tigers  ( 14. juni 2008). Hentet 22. december 2009. Arkiveret fra originalen 22. august 2011.
  78. Kairer, Ryan Palm annoncerer Palm webOS  ( 8. januar 2009). Hentet 16. oktober 2009. Arkiveret fra originalen 22. august 2011.
  79. Tselikov, Dmitry Den første manual til programmering i Palm webOS-miljøet blev annonceret (utilgængeligt link) (18. februar 2009). Hentet 16. oktober 2009. Arkiveret fra originalen 16. september 2009. 
  80. Allen M. Palm webOS. — 1. udg. - O'Reilly Media, 2009. - 464 s. - ISBN 978-0-596-15525-4 .
  81. Sunder Pichai, Linus Upson. Introduktion til Google Chrome-operativsystemet . Google Rusland Blog (8. juli 2009). Hentet 20. november 2009. Arkiveret fra originalen 22. august 2011.
  82. Winship, Dan JavaScript - GNOME live!  (engelsk) . nisse. Dato for adgang: 28. december 2009. Arkiveret fra originalen 22. august 2011.
  83. 1 2 Stich, Christian introducerer JavaScript-objektmodellen til Excel Services i SharePoint 2010  ( 30. november 2009). Hentet 1. december 2009. Arkiveret fra originalen 22. august 2011.
  84. 1 2 Stich, Christian Enkel adgang til regnearksdata ved hjælp af Excel Services 2010 REST API  ( 4. november 2009). Hentet 1. december 2009. Arkiveret fra originalen 22. august 2011.
  85. Dr Mark Alexander Bain. Adgang til OOo IDE // Lær OpenOffice.org-regnearkmakroprogrammering: OOoBasic og Calc-automatisering / Reviewer: Andrew Pitonyak. — 1. - Birmingham: Packt Publishing, 2006. - S. 8-11. — (Fra teknologier til løsninger). — ISBN 1847190979 .
  86. 1 2 Skrivning af Office-scripts i JavaScript  . openoffice.org. Hentet 22. december 2009. Arkiveret fra originalen 22. august 2011.
  87. Skrivning af makroer  . openoffice.org. Hentet 22. december 2009. Arkiveret fra originalen 22. august 2011.
  88. Reed D. Rethinking CS0 with JavaScript  //  Technical Symposium on Computer Science Education. Proceedings af det 32. SIGCSE tekniske symposium om Computer Science Education. - Charlotte, North Carolina, USA: ACM, 2001. - S. 100-104 . - ISBN 1-58113-329-4 .
  89. Drach A.N. Forbedring af pædagogiske færdigheder inden for IKT-undervisning i processen med at undervise i JavaScript i valgfag  // Informationsteknologier i uddannelse - 2008: Indsamling af videnskabelige artikler fra deltagere i VII's videnskabelige og praktiske konference-udstilling 30. - 31. oktober, 2008 .. - Rostov-ved-Don: Rostizdat, 2008. - S. 63 . - ISBN 978-5-7509-0971-1 . Arkiveret fra originalen den 14. maj 2011.
  90. Bosova I.N. Udvikling af uddannelsesprogrammer i informatik på variabel basis og individuelle læseplaner  // Informationsteknologier i uddannelse - 2009: Indsamling af videnskabelige artikler fra deltagere i den IX videnskabelige og praktiske konference-udstilling 29. - 30. oktober 2009 - Rostov-on-Don: Rostizdat, 2009 - S. 25-26 . - ISBN 978-5-7509-0971-1 . Arkiveret fra originalen den 14. maj 2011.
  91. Wu P. Undervisning i grundlæggende spilprogrammering ved hjælp af JavaScript  //  Journal of Computing Sciences in Colleges. Paper fra den anden årlige CCSC Southwestern Conference. - Consortium for Computing Sciences in Colleges, USA: ACM, 2009. - Vol. 24 , udg. 4 . - S. 211-220 . — ISSN 1937-4771 .
  92. Zakas, Nikolas Datalogi i JavaScript : Sammenkædet liste  . Datalogi (13. april 2009). Hentet 12. november 2009. Arkiveret fra originalen 22. august 2011.
  93. ↑ Nyt i JavaScript 1.6  . Mozilla Developer Center . - Nyt i JavaScript version 1.6. Hentet 5. oktober 2009. Arkiveret fra originalen 22. august 2011.
  94. ↑ Nyt i JavaScript 1.7  . Mozilla Developer Center . - Nyt i JavaScript version 1.7. Hentet 5. oktober 2009. Arkiveret fra originalen 22. august 2011.
  95. Nyt i JavaScript 1.8  (engelsk)  (downlink) . Mozilla Developer Center . - Nyt i JavaScript version 1.8. Hentet 15. februar 2010. Arkiveret fra originalen 22. august 2011.
  96. ↑ Nyt i JavaScript 1.8.1  . Mozilla Developer Center . - Nyt i JavaScript version 1.8.1. Hentet 15. februar 2010. Arkiveret fra originalen 22. august 2011.
  97. 1 2 Endeligt udkast til ECMA-262 - ECMAScript-sprogstandarden - er blevet  offentliggjort . ECMA. — Annoncering af den endelige version af udkastet til den femte udgave af ECMA-262. Hentet 25. september 2009. Arkiveret fra originalen 22. august 2011.
  98. Horwat, Waldemar ES5 er en ECMA-  standard . Mozilla-mailingliste (4. december 2009). — Meddelelse om officiel overtagelse af ECMAScript 5 som en ECMA-standard. Hentet 9. december 2009. Arkiveret fra originalen 28. juli 2011.
  99. djwm. Ny version af JavaScript godkendt  ( 7. december 2009). Hentet 9. december 2009. Arkiveret fra originalen 22. august 2011.
  100. Om programmeringsmiljøet  . Microsoft Developer Network . Microsoft. Hentet 5. november 2009. Arkiveret fra originalen 22. august 2011.
  101. Opera DragonFly . Opera software. Hentet 19. december 2009. Arkiveret fra originalen 22. august 2011.
  102. Hatcher, Timothy Introducing Drosera  ( 28. juni 2006). Hentet 5. november 2009. Arkiveret fra originalen 22. august 2011.
  103. Christian Johansen. Kapitel 1. Automatiseret test // Testdrevet JavaScript-udvikling . - Addison-Wesley Professional, 2010. - S.  3 . - (grove snit). - ISBN 0-321-68391-9 , 978-0-321-68391-5.
  104. Christian Johansen. 3.1.4. Funktioner i xUnit Test Frameworks. Testløberen // Testdrevet JavaScript-udvikling . - Addison-Wesley Professional, 2010. - S.  24 , 25. - (Rough Cuts). - ISBN 0-321-68391-9 , 978-0-321-68391-5.
  105. Christian Johansen. 3.3.1. Krydstjek // Testdrevet JavaScript-udvikling . - Addison-Wesley Professional, 2010. - S.  28 . - (grove snit). - ISBN 0-321-68391-9 , 978-0-321-68391-5.
  106. Christian Johansen. 3.3.2. env.js // Testdrevet JavaScript-udvikling . - Addison-Wesley Professional, 2010. - S.  28 , 29. - (Rough Cuts). - ISBN 0-321-68391-9 , 978-0-321-68391-5.
  107. Christian Johansen. 3.3.3. Blue Ridge // Testdrevet JavaScript-udvikling . - Addison-Wesley Professional, 2010. - S.  29 . - (grove snit). - ISBN 0-321-68391-9 , 978-0-321-68391-5.
  108. Christian Johansen. 3.3.4. Problemet med hovedløse testløbere // Testdrevet JavaScript-udvikling . - Addison-Wesley Professional, 2010. - S.  29 . - (grove snit). - ISBN 0-321-68391-9 , 978-0-321-68391-5.
  109. C. Titus Brown, Gheorghe Gheorghiu, Jason Huggins. 3.1. En kort historie om selen // En introduktion til test af webapplikationer med twill og selen. - O'Reilly Media, Inc., 2007. - 60 s.
  110. Christian Johansen. 3.4. En testløber til at styre dem alle // Testdrevet JavaScript-udvikling . - Addison-Wesley Professional, 2010. - S.  29 . - (grove snit). - ISBN 0-321-68391-9 , 978-0-321-68391-5.
  111. Christian Johansen. 3.4.1. Sådan fungerer JsTestDriver // Testdrevet JavaScript-udvikling . - Addison-Wesley Professional, 2010. - S.  29 . - (grove snit). - ISBN 0-321-68391-9 , 978-0-321-68391-5.
  112. Selen  fjernbetjening . seleniumhq.org. Hentet 16. marts 2010. Arkiveret fra originalen 22. august 2011.
  113. Ismayle de Sousa Santos; Pedro de Alcantara dos Santos Neto. Automação de testes funcionais com o Selenium  (port.) (pdf). Dato for adgang: 16. marts 2010. Arkiveret fra originalen 14. marts 2016.
  114. Resig, John TestSwarm  (engelsk)  (downlink) (25. august 2009). Hentet 16. marts 2010. Arkiveret fra originalen 14. februar 2010.
  115. Christian Johansen. 3.1.6. Afhængigheder // Testdrevet JavaScript-udvikling . - Addison-Wesley Professional, 2010. - S.  25 . - (grove snit). - ISBN 0-321-68391-9 , 978-0-321-68391-5.
  116. Christian Johansen. 3.2.1. YUI Test // Testdrevet JavaScript-udvikling . - Addison-Wesley Professional, 2010. - S.  26 . - (grove snit). - ISBN 0-321-68391-9 , 978-0-321-68391-5.
  117. Christian Johansen. 3.2.2. Andre In-Browser-testrammer // Testdrevet JavaScript-udvikling . - Addison-Wesley Professional, 2010. - S.  28 . - (grove snit). - ISBN 0-321-68391-9 , 978-0-321-68391-5.
  118. Crockford, Douglas The Kid JavaScript Programmer  . — En artikel, der afslører forholdet mellem JavaScript og Scheme. Dato for adgang: 28. september 2009. Arkiveret fra originalen 22. august 2011.
  119. R. Tolksdorf, Programmeringssprog til JavaScript  . is-research (19. juli 2009). — Et udvalg af JavaScript-programmeringssprogsimplementeringer. Hentet 12. oktober 2009. Arkiveret fra originalen den 22. august 2011.
  120. hotruby. Ruby på JavaScript og  Flash . Hentet 12. oktober 2009. Arkiveret fra originalen 22. august 2011.
  121. Cooper P. HotRuby : En virtuel JavaScript- og Flash-maskine, der kører Ruby  . Ruby Inside (26. marts 2008). Hentet 12. oktober 2009. Arkiveret fra originalen 22. august 2011.
  122. Schuster W. HotRuby - Ruby 1.9 /YARV opcode-fortolker i Javascript  . infoQ (27. marts 2008). — Beskrivelse af HotRuby.. Hentet 12. oktober 2009. Arkiveret fra originalen 22. august 2011.
  123. Formiga, Andrei s-mr.  Selvfremstillet næsehorn . Hentet 9. december 2009. Arkiveret fra originalen 22. august 2011.
  124. Hlavaty, Tom WPS: PostScript til internettet  . Hentet 12. oktober 2009. Arkiveret fra originalen 22. august 2011.
  125. 6502asm.com-6502 kompatibel assembler og emulator i  javascript . Hentet 12. oktober 2009. Arkiveret fra originalen 22. august 2011.
  126. Cappuccino Web Framework - Byg desktop-klasseapplikationer i Objective-J og  JavaScript . Hentet 12. oktober 2009. Arkiveret fra originalen 22. august 2011.
  127. Yhc/Javascript/Kort  overblik . Hentet 12. oktober 2009. Arkiveret fra originalen 22. august 2011.
  128. Monash Toy  Prolog . Hentet 12. oktober 2009. Arkiveret fra originalen 22. august 2011.
  129. ioctls. Prolog i  JavaScript . Hentet 12. oktober 2009. Arkiveret fra originalen 22. august 2011.
  130. Kattetolk  online . Hentet 12. oktober 2009. Arkiveret fra originalen 22. august 2011.
  131. BiwaScheme  . _ Hentet 29. marts 2018. Arkiveret fra originalen 22. august 2011.
  132. Strom, Nikko Om ganske BASIC  ( 2006). Hentet 12. oktober 2009. Arkiveret fra originalen 22. august 2011.
  133. ↑ Orcutt , Bill About Lily  . Hentet 12. februar 2010. Arkiveret fra originalen 22. august 2011.
  134. Jacobson, Kyle wForth - A JavaScript Forth Interpreter  ( 3. december 2008). Hentet 12. februar 2010. Arkiveret fra originalen 22. august 2011.
  135. phype  . _ code.google.com. Hentet 12. februar 2010. Arkiveret fra originalen 22. august 2011.
  136. Oberon 07  compiler . Hentet 29. marts 2018. Arkiveret fra originalen 11. juni 2018.
  137. ↑ Pakkeoplysninger : HTML_Javascript  . PEAR - PHP Extension and Application Repository . Hentet 12. oktober 2009. Arkiveret fra originalen 22. august 2011.
  138. TCLLIB - Tcl Standard Library:  javascript . Hentet 12. oktober 2009. Arkiveret fra originalen 22. august 2011.
  139. Data::  JavaScript . Omfattende Perl-arkivnetværk . Hentet 12. oktober 2009. Arkiveret fra originalen 22. august 2011.
  140. Zakas N. ECMAScript-understøttelse i webbrowsere // Professionel JavaScript til webudviklere. — 2. udg. - USA, Canada: Wiley Publishing, Inc., 2009. - S. 5, 6. - ISBN 978-0-470-22780-0 .
  141. ↑ Webbrowser ECMAScript - understøttelse  . Hentet 28. oktober 2009. Arkiveret fra originalen 22. august 2011.
  142. Webbrowser DOM-  understøttelse . Hentet 28. oktober 2009. Arkiveret fra originalen 22. august 2011.
  143. Crill, Paul . Eich: JavaScript bliver hurtigere, kan fortrænge Flash , InfoWorld (6. november 2009). Arkiveret fra originalen den 9. november 2009. Hentet 11. november 2009.
  144. Walden, Jeff Tjek SpiderMonkey-korrektheden på Sputnik-testrammerne  . Fejlsporingssystem for Mozilla Bugzilla -produkter (29. juni 2009). — Fejlrapportering i SpiderMonkey . Hentet 27. november 2009. Arkiveret fra originalen 7. november 2011.
  145. ↑ Blandy , Jim Integrer Google Sputnik testsuite  . Fejlsporingssystem for Mozilla Bugzilla -produkter (30. juni 2009). — Et forslag om at integrere Sputnik i Mozilla -testinfrastrukturen . Hentet 27. november 2009. Arkiveret fra originalen 7. november 2011.
  146. 1 2 Hansen, Christian Plesner Launching Sputnik into Orbit  ( 29. juni 2009). — Annoncering af Sputnik, et værktøj til at teste overholdelse af ECMAScript-specifikationen af ​​sprogimplementeringer. Hentet 27. november 2009. Arkiveret fra originalen 22. august 2011.
  147. Zaytsev, Juriy Sputniktests web runner  (engelsk)  (utilgængeligt link) (9. november 2009). — Undersøgelse af browserens overensstemmelse med ECMAScript-specifikationen. Hentet 27. november 2009. Arkiveret fra originalen 13. november 2009.
  148. djwm. Google lancerer kørebar testsuite til browser ECMAScript/  JavaScript . h-online.com (11. marts 2010). Hentet 12. marts 2010. Arkiveret fra originalen 22. august 2011.
  149. Taft, Darryl K. Hvordan opfører IE 8 sig?  (engelsk) . eWeek (11. marts 2010). — En artikel, der skitserer resultaterne af en undersøgelse foretaget af Google-ingeniører vedrørende korrektheden af ​​browserunderstøttelse af JavaScript, baseret på test med Sputnik. Hentet 12. marts 2010. Arkiveret fra originalen 22. august 2011.
  150. allenwb. ECMAScript 5 Conformance Suite  (engelsk) (1. juli 2009). Hentet 9. december 2009. Arkiveret fra originalen 22. august 2011.
  151. Oiaga, Marius Microsoft udgiver tests for udviklingen af ​​JavaScript  ( 30. juni 2009). Hentet 9. december 2009. Arkiveret fra originalen 22. august 2011.
  152. allenwb. ECMAScript 5 Conformance Suite. Version 0.2. Download-side  (engelsk) (13. september 2009). Hentet 12. marts 2010. Arkiveret fra originalen 22. august 2011.
  153. Clary, Bob JavaScript Test Suite  (eng.)  (dødt link) (3. oktober 2004). Hentet 9. december 2009. Arkiveret fra originalen 22. august 2011.
  154. Begle, Christine JavaScript-  testbibliotek (  utilgængeligt link) . Hentet 9. december 2009. Arkiveret fra originalen 22. august 2011.
  155. 1 2 Flanagan D. 13.8.1. Hvad JavaScript ikke kan // JavaScript. Detaljeret vejledning = JavaScript. Den bestemte guide / Oversat af A. Kiselev. - 5. udg. - Sankt Petersborg. : "Symbol-Plus" , 2008. - S.  280 , 281. - ISBN 5-93286-103-7 .
  156. Flanagan D. 13.8.2. Fælles oprindelsespolitik // JavaScript. Detaljeret vejledning = JavaScript. Den bestemte guide / Oversat af A. Kiselev. - 5. udg. - Sankt Petersborg. : "Symbol-Plus" , 2008. - S.  281 -283. — ISBN 5-93286-103-7 .
  157. Mozilla Cross-Site Scripting-sårbarhed rapporteret og  rettet . MozillaZine (28. februar 2004). Hentet 24. november 2009. Arkiveret fra originalen 22. august 2011.
  158. Kottelin, Thor Højreklik på "beskyttelse"? Glem alt om det  (engelsk)  (utilgængeligt link) (17. juni 2008). Hentet 24. november 2009. Arkiveret fra originalen 22. august 2011.
  159. Habryn, Mikolaj J. Bufferoverløb i crypto.signText()  (Eng.) (1. marts 2006). Hentet 24. november 2009. Arkiveret fra originalen 22. august 2011.
  160. Festa, Paul Buffer-overflow-fejl i IE  ( 19. august 1998). Hentet 24. november 2009. Arkiveret fra originalen 22. august 2011.
  161. Apple Safari JavaScript-bufferoverløb lader fjernbrugere udføre vilkårlig kode og HTTP-omdirigeringsfejl giver fjernbrugere adgang til filer  ( 2. marts 2006). Hentet 24. november 2009. Arkiveret fra originalen 18. februar 2010.
  162. Farrell, Nick Slå Javascript fra i IE igen  ( 24. november 2009). Hentet 24. november 2009. Arkiveret fra originalen 22. august 2011.
  163. Webbruger. Microsoft udsteder råd om fejl i IE  ( 24. november 2009). Hentet 24. november 2009. Arkiveret fra originalen 9. august 2021.
  164. hdm. Microsoft WebViewFolderIcon ActiveX Control Buffer Overflow sårbarhed  ( 17. juli 2006). Hentet 24. november 2009. Arkiveret fra originalen 22. august 2011.
  165. Macromedia Flash Activex Buffer Overflow  ( 1. marts 2002). Hentet 24. november 2009. Arkiveret fra originalen 22. august 2011.
  166. Nul dages sårbarheder i Firefox-udvidelser opdaget  ( 20. november 2009). Hentet 24. november 2009. Arkiveret fra originalen 22. august 2011.
  167. Manion, Art Microsoft Internet Explorer validerer ikke korrekt kilden til omdirigeret ramme  ( 3. juni 2004). Hentet 24. november 2009. Arkiveret fra originalen 30. oktober 2009.
  168. Privilegiumeskalering via DOM-egenskabstilsidesættelser  (engelsk) (2005). Hentet 24. november 2009. Arkiveret fra originalen 22. august 2011.
  169. Canavan, John JS.Seeker.K  (eng.) (1. oktober 2003). Hentet 24. november 2009. Arkiveret fra originalen 22. august 2011.

Specifikationer

  1. nodejs/node-eps . GitHub . Hentet 5. juli 2018. Arkiveret fra originalen 29. august 2020.
  2. TC39. 4. Oversigt // ECMAScript-sprogspecifikation . — 5. udg. - 2009. - S. 1, 2. Arkivkopi af 12. april 2015 på Wayback Machine
  3. ↑ Document Object Model (DOM ) niveau 3 kernespecifikation  . W3C (7. april 2004). Hentet 6. november 2009. Arkiveret fra originalen 22. august 2011.
  4. HTML5. Udkast til standard - 8. december 2009  (engelsk) . W3C (8. december 2009). Hentet 9. december 2009. Arkiveret fra originalen 22. august 2011.
  5. Window Object 1.0 W3C Working Draft 7. april  2006 . W3C (7. april 2006). Hentet 9. december 2009. Arkiveret fra originalen 22. august 2011.
  6. 18.2.1 SCRIPT-elementet . HTML 5-specifikation . W3C (18. december 2013). Hentet 18. juni 2013. Arkiveret fra originalen 22. august 2011.
  7. 18.2.3 Iboende  begivenheder . HTML 4.01-specifikation . W3C (24. december 1999). Hentet 15. november 2009. Arkiveret fra originalen 22. august 2011.
  8. 4.11.1  Scriptelementet . HTML5-specifikation . W3C (28. oktober 2014). Hentet 11. juni 2015. Arkiveret fra originalen 13. juni 2015.
  9. TC39. Introduktion // ECMAScript-sprogspecifikation . — 5. udg. — 2009. Arkiveret 12. april 2015 på Wayback Machine

Kommentarer

  1. C#, PHP, Perl, Python, Java.
  2. Tilgængelig som et separat JSAN- bibliotek .
  3. Dette forhindrer os dog ikke i at betragte DOM som en integreret del af et sprog, en applikation eller et bibliotek. Når Brendan Eich for eksempel beskriver målene for ES-Harmony, angiver det som et af målene med at skabe sproget, at det skal være velegnet til at skabe biblioteker, der blandt andet kan omfatte DOM.
  4. 'Computer science in JavaScript'-projektet Arkiveret 17. september 2009 på Wayback Machine inkluderer et sæt klassiske paradigmer , algoritmer og tilgange skrevet i JavaScript og tilgængelige under MIT-licensen .

Links

Dokumentation

Referencer

Tematiske ressourcer

Blogs af berømte JavaScript-bogsforfattere