JavaScript - Wikipedia
JavaScript - Wikipedia
Filename .js
extensions
Website Mozilla
Major implementations
V8, JavaScriptCore, SpiderMonkey, Chakra
Influenced by
Influenced
JavaScript at Wikibooks
JavaScript
Filename .js
extension
Internet application/javascript
media type
text/javascript (obsolete)
Uniform Type
com.netscape.javascript-source
Identifier (UTI)
[5]
As a multi-paradigm language,
JavaScript supports event-driven,
functional, and imperative (including
object-oriented and prototype-based)
programming styles. It has an API for
working with text, arrays, dates, regular
expressions, and basic manipulation of
the DOM, but the language itself does not
include any I/O, such as networking,
storage, or graphics facilities, relying for
these upon the host environment in
which it is embedded.
History
Beginnings at Netscape
Server-side JavaScript
Adoption by Microsoft
Microsoft script technologies including
VBScript and JScript were released in
1996. JScript, a reverse-engineered
implementation of Netscape's
JavaScript, was part of Internet Explorer
3. JScript was also available for server-
side scripting in Internet Information
Server. Internet Explorer 3 also included
Microsoft's first support for CSS and
various extensions to HTML, but in each
case the implementation was noticeably
different to that found in Netscape
Navigator at the time.[18][19] These
differences made it difficult for designers
and programmers to make a single
website work well in both browsers,
leading to the use of "best viewed in
Netscape" and "best viewed in Internet
Explorer" logos that characterized these
early years of the browser wars.[20]
JavaScript began to acquire a reputation
for being one of the roadblocks to a
cross-platform and standards-driven
Web. Some developers took on the
difficult task of trying to make their sites
work in both major browsers, but many
could not afford the time.[18] With the
release of Internet Explorer 4, Microsoft
introduced the concept of Dynamic
HTML, but the differences in language
implementations and the different and
proprietary Document Object Models
remained and were obstacles to
widespread take-up of JavaScript on the
Web.[18]
Standardization
Later developments
JavaScript has become one of the most
popular programming languages on the
Web. Initially, however, many professional
programmers denigrated the language
because, among other reasons, its target
audience consisted of Web authors and
other such "amateurs".[23] The advent of
Ajax returned JavaScript to the spotlight
and brought more professional
programming attention. The result was a
proliferation of comprehensive
frameworks and libraries, improved
JavaScript programming practices, and
increased usage of JavaScript outside
Web browsers, as seen by the
proliferation of server-side JavaScript
platforms.
In January 2009, the CommonJS project
was founded with the goal of specifying
a common standard library mainly for
JavaScript development outside the
browser.[24]
Trademark
"JavaScript" is a trademark of Oracle
Corporation in the United States.[25] It is
used under license for technology
invented and implemented by Netscape
Communications and current entities
such as the Mozilla Foundation.[26]
Vanilla JavaScript
The terms Vanilla JavaScript and Vanilla
JS refer to JavaScript not extended by
any frameworks or additional libraries.
Scripts written in Vanilla JS are plain
JavaScript code.
Features
The following features are common to all
conforming ECMAScript
implementations, unless explicitly
specified otherwise.
Universal support
Dynamic
Typing
As with most scripting languages,
JavaScript is dynamically typed; a type
is associated with each value, rather
than just with each expression. For
example, a variable that is at one time
bound to a number may later be re-
bound to a string.[28] JavaScript
supports various ways to test the type
of an object, including duck typing.[29]
Run-time evaluation
JavaScript includes an eval function
that can execute statements provided
as strings at run-time.
Prototype-based (object-
oriented)
Prototypes
JavaScript uses prototypes where
many other object-oriented languages
use classes for inheritance.[30] It is
possible to simulate many class-based
features with prototypes in
JavaScript.[31]
Functions as object constructors
Functions double as object
constructors, along with their typical
role. Prefixing a function call with new
will create an instance of a prototype,
inheriting properties and methods
from the constructor (including
properties from the Object
prototype).[32] ECMAScript 5 offers the
Object.create method, allowing explicit
creation of an instance without
automatically inheriting from the
Object prototype (older environments
can assign the prototype to null).[33]
The constructor's prototype property
determines the object used for the new
object's internal prototype. New
methods can be added by modifying
the prototype of the function used as a
constructor. JavaScript's built-in
constructors, such as Array or Object,
also have prototypes that can be
modified. While it is possible to modify
the Object prototype, it is generally
considered bad practice because most
objects in JavaScript will inherit
methods and properties from the
Object prototype, and they may not
expect the prototype to be modified.[34]
Functions as methods
Unlike many object-oriented
languages, there is no distinction
between a function definition and a
method definition. Rather, the
distinction occurs during function
calling; when a function is called as a
method of an object, the function's
local this keyword is bound to that
object for that invocation.
Functional
Delegative
Miscellaneous
Run-time environment
JavaScript typically relies on a run-time
environment (e.g., a Web browser) to
provide objects and methods by which
scripts can interact with the
environment (e.g., a webpage DOM). It
also relies on the run-time environment
to provide the ability to include/import
scripts (e.g., HTML <script> elements).
This is not a language feature per se,
but it is common in most JavaScript
implementations.
JavaScript processes messages from
a queue one at a time. Upon loading a
new message, JavaScript calls a
function associated with that
message, which creates a call stack
frame (the function's arguments and
local variables). The call stack shrinks
and grows based on the function's
needs. Upon function completion,
when the stack is empty, JavaScript
proceeds to the next message in the
queue. This is called the event loop,
described as "run to completion"
because each message is fully
processed before the next message is
considered. However, the language's
concurrency model describes the
event loop as non-blocking: program
input/output is performed using events
and callback functions. This means,
for instance, that JavaScript can
process a mouse click while waiting
for a database query to return
information.[41]
Variadic functions
An indefinite number of parameters
can be passed to a function. The
function can access them through
formal parameters and also through
the local arguments object. Variadic
functions can also be created by using
the bind method.
Array and object literals
Like many scripting languages, arrays
and objects (associative arrays in
other languages) can each be created
with a succinct shortcut syntax. In fact,
these literals form the basis of the
JSON data format.
Regular expressions
JavaScript also supports regular
expressions in a manner similar to
Perl, which provide a concise and
powerful syntax for text manipulation
that is more sophisticated than the
built-in string functions.[42]
Vendor-specific extensions
Syntax
Simple examples
function factorial(n) {
if (n === 0 || n === 1)
{
return 1; // 0! =
1! = 1
}
return n * factorial(n
- 1);
}
factorial(3); // returns 6
An anonymous function (or lambda):
function counter() {
var count = 0;
return function() {
return ++count;
};
}
Object example:
function Ball(r) {
this.radius = r; //the
radius variable is local to
the ball object
this.area = pi*r**2;
this.show = function(){
//objects can contain
functions
drawCircle(r);
//references a circle
drawing function
}
}
myBall = new Ball(5);
//creates a new instance of
the ball object with radius
5
myBall.show(); //this
instance of the ball object
has the show function
performed on it
Immediately-invoked function
expressions are often used to create
modules, as before ECMAScript 2015
there was not built-in construct in the
language. Modules allow gathering
properties and methods in a namespace
and making some of them private:
return { // public
methods
get: function () {
alert(i);
},
set: function
(value) {
i = value;
},
increment: function
() {
alert(++i);
}
};
})(); // module
counter.get(); //
shows 0
counter.set(6);
counter.increment(); //
shows 7
counter.increment(); //
shows 8
}
// The prototype of object
instances created by a
constructor is
// that constructor's
"prototype" property.
LCMCalculator.prototype = {
// object literal
constructor:
LCMCalculator, // when
reassigning a prototype,
set the constructor
property appropriately
gcd: function() { //
method that calculates the
greatest common divisor
// Euclidean algorithm:
var a =
Math.abs(this.a),
b = Math.abs(this.b),
t;
if (a < b) {
// swap variables
t = b;
b = a;
a = t;
}
while (b !== 0) {
t = b;
b = a % b;
a = t;
}
// Only need to
calculate GCD once, so
"redefine" this method.
// (Actually not
redefinition—it's defined
on the instance itself,
// so that this.gcd
refers to this
"redefinition" instead of
LCMCalculator.prototype.gcd
.
// Note that this leads
to a wrong result if the
LCMCalculator object
members "a" and/or "b" are
altered afterwards.)
// Also, 'gcd' ===
"gcd", this['gcd'] ===
this.gcd
this['gcd'] =
function() {
return a;
};
return a;
},
// Object property names
can be specified by strings
delimited by double (") or
single (') quotes.
lcm: function() {
// Variable names don't
collide with object
properties, e.g., |lcm| is
not |this.lcm|.
// not using
|this.a*this.b| to avoid FP
precision issues
var lcm = this.a /
this.gcd() * this.b;
// Only need to
calculate lcm once, so
"redefine" this method.
this.lcm = function() {
return lcm;
};
return lcm;
},
toString: function() {
return "LCMCalculator:
a = " + this.a + ", b = " +
this.b;
}
};
document.body.appendChild(d
ocument.createTextNode(x));
document.body.appendChild(d
ocument.createElement('br')
);
}
function printResult(obj) {
output(obj + ", gcd = " +
obj.gcd() + ", lcm = " +
obj.lcm());
}
LCMCalculator: a = 28, b =
56, gcd = 28, lcm = 56
LCMCalculator: a = 21, b =
56, gcd = 7, lcm = 168
LCMCalculator: a = 25, b =
55, gcd = 5, lcm = 275
LCMCalculator: a = 22, b =
58, gcd = 2, lcm = 638
Example script
<!DOCTYPE html>
<html>
<head>
<title>Example</title>
</head>
<body>
<button
id="hellobutton">Hello</but
ton>
<script>
document.getElementById('he
llobutton').onclick =
function() {
alert('Hello
world!');
// Show a dialog
var myTextNode
=
document.createTextNode('So
me new words.');
document.body.appendChild(m
yTextNode); // Append
"Some new words" to the
page
};
</script>
</body>
</html>
Compatibility considerations
Security
JavaScript and the DOM provide the
potential for malicious authors to deliver
scripts to run on a client computer via
the Web. Browser authors contain this
risk using two restrictions. First, scripts
run in a sandbox in which they can only
perform Web-related actions, not general-
purpose programming tasks like creating
files. Second, scripts are constrained by
the same-origin policy: scripts from one
Web site do not have access to
information such as usernames,
passwords, or cookies sent to another
site. Most JavaScript-related security
bugs are breaches of either the same
origin policy or the sandbox.
Cross-site vulnerabilities
Sandbox implementation
errors
Hardware vulnerabilities
Scripting engine
Microsoft's Active Scripting technology
supports JScript as a scripting
language.[84]
Java introduced the javax.script
package in version 6 that includes a
JavaScript implementation based on
Mozilla Rhino. Thus, Java applications
can host scripts that access the
application's variables and objects,
much like Web browsers host scripts
that access a webpage's Document
Object Model (DOM).[85][86]
The Qt C++ toolkit includes a QtScript
module to interpret JavaScript,
analogous to Java's javax.script
package.[87]
OS X Yosemite introduced JavaScript
for Automation (JXA), which is built
upon JavaScriptCore and the Open
Scripting Architecture. It features an
Objective-C bridge that enables entire
Cocoa applications to be programmed
in JavaScript.
Late Night Software's JavaScript OSA
(also known as JavaScript for OSA, or
JSOSA) is a freeware alternative to
AppleScript for OS X. It is based on the
Mozilla JavaScript 1.5 implementation,
with the addition of a MacOS object for
interaction with the operating system
and third-party applications.
Application platform
ActionScript, the programming
language used in Adobe Flash, is
another implementation of the
ECMAScript standard.
Adobe AIR (Adobe Integrated Runtime)
is a JavaScript runtime that allows
developers to create desktop
applications.
Electron is an open-source framework
developed by GitHub.
CA Technologies AutoShell cross-
application scripting environment is
built on the SpiderMonkey JavaScript
engine. It contains preprocessor-like
extensions for command definition, as
well as custom classes for various
system-related tasks like file I/O,
operation system command invocation
and redirection, and COM scripting.
Apache Cordova is a mobile
application development framework
Cocos2d is an open source software
framework. It can be used to build
games, apps and other cross platform
GUI based interactive programs
Chromium Embedded Framework
(CEF) is an open source framework for
embedding a web browser engine
based on the Chromium core
RhoMobile Suite is a set of
development tools for creating data-
centric, cross-platform, native mobile
consumer and enterprise applications.
NW.js call all Node.js modules directly
from DOM and enable a new way of
writing applications with all Web
technologies.[88]
GNOME Shell, the shell for the
GNOME 3 desktop environment,[89]
made JavaScript its default
programming language in 2013.[90]
The Mozilla application framework
(XPFE) platform, which underlies
Firefox, Thunderbird, and some other
Web browsers, uses JavaScript to
implement the graphical user interface
(GUI) of its various products.
Qt Quick's markup language (available
since Qt 4.7) uses JavaScript for its
application logic. Its declarative syntax
is also similar to JavaScript.
Ubuntu Touch provides a JavaScript
API for its unified usability interface.
Open webOS is the next generation of
web-centric platforms built to run on a
wide range of form factors.[91]
enyo JS is a framework to develop
apps for all major platforms, from
phones and tablets to PCs and TVs[92]
WinJS provides a special Windows
Library for JavaScript functionality in
Windows 8 that enables the
development of Modern style (formerly
Metro style) applications in HTML5 and
JavaScript.
NativeScript is an open-source
framework to develop apps on the
Apple iOS and Android platforms.
Weex is a framework for building
Mobile cross-platform UI, created by
China Tech giant Alibaba[93]
XULRunner is packaged version of the
Mozilla platform to enable standalone
desktop application development
Development tools
Within JavaScript, access to a debugger
becomes invaluable when developing
large, non-trivial programs. Because
there can be implementation differences
between the various browsers
(particularly within the DOM), it is useful
to have access to a debugger for each of
the browsers that a Web application
targets.[94]
Version history
JavaScript was initially developed in
1996 for use in the Netscape Navigator
Web browser. In the same year Microsoft
released an implementation for Internet
Explorer. This implementation was called
JScript due to trademark issues. In 1997
the first standardized version of the
language was released under the name
ECMAScript in the first edition of the
ECMA-252 standard. The explicit
versioning and opt-in of language
features was Mozilla-specific and has
been removed. Firefox 4 was the last
version which referred to a JavaScript
version (1.8.5). With new editions of the
ECMA-262 standard, JavaScript
language features are now often
mentioned with their initial definition in
the ECMA-262 editions.
March
1.0 2.0 3.0
1996
August
1.1 3.0
1996
June
1.2 4.0-4.05 3
1997
Netscape
1.4 6
Server
5.5
(JScript
5.5),
6
(JScript
November ECMA-262 3rd 5.6),
1.5 6.0 1.0 7.0 3.0-5 1.0-10.0.666
2000 edition 7
(JScript
5.7),
8
(JScript
5.8)
1.5 + array
extras + array
November
1.6 and string 1.5
2005
generics +
E4X
1.6 + Pythonic
October
1.7 generators + 2.0 28.0.1500.95
2006
iterators + let
1.8 + native
JSON support
1.8.1 3.5
+ minor
updates
1.8.2 + new
features for
July 27,
1.8.5 ECMA-262 5th 4.0
2010
edition
compliance
Use as an intermediate
language
See also
WebAssembly
References
1. Flanagan 2011, pp. 1–2.
2. Press release announcing JavaScript ,
"Netscape and Sun announce JavaScript",
PR Newswire, December 4, 1995
3. "Standard ECMA-262" . Ecma
International. 2017-07-03.
4. "RFC 4329" . Apps.ietf.org. Archived
from the original on 2014-03-16.
Retrieved 16 February 2016.
5. "System-Declared Uniform Type
Identifiers" . Mac OS X Reference Library.
Apple Inc. Retrieved 2010-03-05.
6. "JavaScript" . Collins English Dictionary
– Complete & Unabridged 2012 Digital
Edition. William Collins Sons & Co. 2012.
Retrieved 21 August 2015.
7. "ECMAScript Language Overview"
(PDF) . 2007-10-23. p. 4. Retrieved
2009-05-03.
8. "Chapter 4. How JavaScript Was
Created" .
9. Severance, Charles (February 2012).
"JavaScript: Designing a Language in 10
Days" . Computer. IEEE Computer Society.
45 (2): 7–8. doi:10.1109/MC.2012.57 .
Retrieved 23 March 2013.
10. "TechVision: Innovators of the Net:
Brendan Eich and JavaScript" .
web.archive.org. Archived from the
original on 2008-02-08.
11. "The History of Programming
Languages" . oreilly.com. O'Reilly Media.
2004. Retrieved 16 July 2016.
12. "What Is JavaScript?" (PDF).
wiley.com. Wiley. Retrieved 16 July 2016.
13. Noorda, Brent (21 September 2013).
"Brent Noorda's Answers on ECMA" .
quora.com. Retrieved 16 July 2016.
14. Noorda, Brent (24 June 2010). "History
of Nombas" . brent-noorda.com. Retrieved
16 July 2016.
15. Eich, Brendan (21 June 2011). "New
JavaScript Engine Module Owner" .
brendaneich.com. Retrieved 16 July 2016.
16. Netscape Communications
Corporation (11 December 1998). "Server-
Side JavaScript Guide" . oracle.com.
Netscape Communications Corporation.
Retrieved 2016-07-16.
17. Mahemoff, Michael (17 December
2009). "Server-Side JavaScript, Back with
a Vengeance" . readwrite.com. Retrieved
2016-07-16.
18. Champeon, Steve (6 April 2001).
"JavaScript, How Did We Get Here?" .
oreilly.com. Retrieved 16 July 2016.
19. "Microsoft Internet Explorer 3.0 Beta
Now Available" . microsoft.com.
Microsoft. 29 May 1996. Retrieved 16 July
2016.
20. McCracken, Harry (16 September
2010). "The Unwelcome Return of "Best
Viewed with Internet Explorer" " .
technologizer.com. Retrieved 16 July
2016.
21. "Documentation" . ecmascript.org.
Retrieved 16 July 2016.
22. "Standard ECMA-262" . Ecma
International. 2017-07-03.
23. Crockford, Douglas (2001).
"JavaScript, The World's Most
Misunderstood Programming Language" .
crockford.com. Retrieved 16 July 2016.
24. Kowal, Kris (1 December 2009).
"CommonJS Effort Sets JavaScript on
Path for World Domination" .
arstechnica.com. Retrieved 16 July 2016.
25. "USPTO Copyright entry #75026640" .
USPTO.
26. "Sun Trademarks" . Sun
Microsystems. Archived from the original
on 28 May 2010. Retrieved 2007-11-08.
27. Flanagan 2006, p. 16.
28. "JavaScript data types and data
structures - JavaScript | MDN" .
Developer.mozilla.org. 2017-02-16.
Retrieved 2017-02-24.
29. Flanagan 2006, pp. 176–178.
30. "Inheritance and the prototype chain" .
Mozilla Developer Network. Mozilla.
Retrieved 6 April 2013.
31. Herman, David (2013). Effective
JavaScript. Addison-Wesley. p. 83.
ISBN 978-0-321-81218-6.
32. Haverbeke, Marijn (2011). Eloquent
JavaScript. No Starch Press. pp. 95–97.
ISBN 978-1-59327-282-1.
33. Katz, Yehuda. "Understanding
"Prototypes" in JavaScript" . Retrieved
6 April 2013.
34. Herman, David (2013). Effective
JavaScript. Addison-Wesley. pp. 125–127.
ISBN 978-0-321-81218-6.
35. "Properties of the Function Object" .
Es5.github.com. Retrieved 2013-05-26.
36. Flanagan 2006, p. 141.
37. The many talents of JavaScript for
generalizing Role-Oriented Programming
approaches like Traits and Mixins ,
Peterseliger.blogpsot.de, April 11, 2014.
38. Traits for JavaScript , 2010.
39. "Home | CocktailJS" .
Cocktailjs.github.io. Retrieved 2017-02-24.
40. Angus Croll, A fresh look at JavaScript
Mixins , published May 31, 2011.
41. "Concurrency model and Event Loop" .
Mozilla Developer Network. Retrieved
2015-08-28.
42. Haverbeke, Marijn (2011). Eloquent
JavaScript. No Starch Press. pp. 139–149.
ISBN 978-1-59327-282-1.
43. Robert Nyman, Getters And Setters
With JavaScript – Code Samples And
Demos , Robertnyman.com, published 29
May 2009, accessed 2 January 2010.
44. John Resig, JavaScript Getters and
Setters , Ejohn.org, 18 July 2007,
accessed 2 January 2010
45. "E4X – Archive of obsolete content |
MDN" . Mozilla Developer Network.
Mozilla Foundation. Feb 14, 2014.
Retrieved 13 July 2014.
46. "var – JavaScript – MDN" . The
Mozilla Developer Network. Retrieved
22 December 2012.
47. "ECMAScript Language Specification –
ECMA-262 Edition 5.1" . Ecma
International. Retrieved 22 December
2012.
48. "console" . Mozilla Developer Network.
Mozilla. Retrieved 6 April 2013.
49. "arguments" . Mozilla Developer
Network. Mozilla. Retrieved 6 April 2013.
50.
https://w3techs.com/technologies/details
/cp-javascript/all/all
51. "JavaScript tracking – Piwik" . Piwik.
Retrieved 31 March 2012.
52. Hamilton, Naomi (2008-07-31). "The A-
Z of Programming Languages:
JavaScript" . computerworld.com.au.
53. "Javascript - Object detection" .
Quirksmode.org. Retrieved 2017-02-24.
54. Peter-Paul Koch, Mission Impossible –
mouse position
55. "JavaScript - Browser detect" .
Quirksmode.org. Retrieved 2017-02-24.
56. "Making JavaScript Safe for
Advertising" . ADsafe. Retrieved
2013-05-26.
57. "Secure ECMA Script (SES)" .
Code.google.com. Retrieved 2013-05-26.
58. "Mozilla Cross-Site Scripting
Vulnerability Reported and Fixed -
MozillaZine Talkback" . Mozillazine.org.
Retrieved 2017-02-24.
59. "Right-click "protection"? Forget about
it" . 2008-06-17. ISSN 1797-1993 .
Retrieved 2008-06-17.
60. "Thou Shalt Not Depend on Me:
Analysing the Use of Outdated JavaScript
Libraries on the Web" (PDF). 2016-12-21.
Retrieved 2017-02-22.
61. Quartz, How one programmer broke
the internet by deleting a tiny piece of
code
62. SC Magazine UK, Developer's 11 lines
of deleted code 'breaks the internet'
63. Mozilla Corporation, Buffer overflow in
crypto.signText()
64. Festa, Paul (August 19, 1998). "Buffer-
overflow bug in IE" . CNET. Archived from
the original on December 25, 2002.
65. SecurityTracker.com, Apple Safari
JavaScript Buffer Overflow Lets Remote
Users Execute Arbitrary Code and HTTP
Redirect Bug Lets Remote Users Access
Files
66. SecurityFocus, Microsoft
WebViewFolderIcon ActiveX Control
Buffer Overflow Vulnerability
67. Fusion Authority, Macromedia Flash
ActiveX Buffer Overflow
68. "Protected Mode in Vista IE7 –
IEBlog" . Blogs.msdn.com. 2006-02-09.
Retrieved 2017-02-24.
69. US CERT, Vulnerability Note
VU#713878: Microsoft Internet Explorer
does not properly validate source of
redirected frame
70. Mozilla Foundation, Mozilla
Foundation Security Advisory 2005–41:
Privilege escalation via DOM property
overrides
71. Microsoft Corporation, Changes to
Functionality in Microsoft Windows XP
Service Pack 2: Part 5: Enhanced
Browsing Security
72. For one example of a rare JavaScript
Trojan Horse, see Symantec Corporation,
JS.Seeker.K
73. AnC VUSec, 2017
74. New ASLR-busting JavaScript is about
to make drive-by exploits much nastier
Ars Technica, 2017
75. "JavaScript for Acrobat" . Retrieved
2009-08-18.
76. "Logic Pro X" . Apple. Apple, Inc.
Retrieved January 31, 2017.
77. "Unity Scripting" . unity3d.com.
Retrieved 2013-01-29.
78. "Technical Specification" .
dxstudio.com. Retrieved 2009-10-20.
79. THINK! The Maxwell Render Resourcer
Center, Scripting References
80. Google Apps Script, Google Apps
Script
81. "ChatZilla! Frequently Asked Questions
– 4.5. How do I write scripts?" .
Chatzilla.hacksrus.com. Retrieved
11 February 2011.
82. "Xcdscript" . Archived from the
original on 1 May 2011. Retrieved
11 February 2011.
83. "RPG Maker MV | RPG Maker | Make
Your Own Games!" . Retrieved 28 August
2015.
84. "Version Information (JavaScript)" .
Msdn.microsoft.com. Retrieved
2013-05-26.
85. "javax.script release notes" .
Java.sun.com. Retrieved 2009-05-19.
86. Flanagan 2006, pp. 214 et seq.
87. Nokia Corporation, QtScript Module
88. "NW.js" . Nwjs.io. Retrieved
2017-02-24.
89. "Behind the Scenes with Owen
Taylor" . The GNOME Journal. Archived
from the original on 2012-12-21.
Retrieved 2010-01-23.
90. "Answering the question: "How do I
develop an app for GNOME?" " .
91. [1]
92. "Enyo JavaScript Application
Framework" . Enyojs.com. Retrieved
2017-02-24.
93. [2]
94. "Advanced Debugging With
JavaScript" . alistapart.com. 2009-02-03.
Retrieved 2010-05-28.
95. "The JavaScript Debugging Console" .
javascript.about.com. 2010-05-28.
Retrieved 2010-05-28.
96. "SplineTech JavaScript Debugger – an
independent standalone JavaScript
Debugger" . javascript-debugger.com.
2013-08-26. Retrieved 2013-08-26.
97. "Debugging with Node Inspector" .
docs.strongloop.com. Retrieved
2014-05-07.
98. JScript development in Microsoft
Office 11 (MS InfoPath 2003)
99. "Introducing Drosera – Surfin' Safari" .
Webkit.org. 2006-06-28. Retrieved
2009-05-19.
100. "Opera DragonFly" . Opera Software.
101. "Khan Academy Computer Science" .
Retrieved 28 Sep 2012.
102. "New in JavaScript" .
developer.mozilla.org. 2014. Retrieved
2016-07-16.
103. "JavaScript – JScript – ECMAScript
version history" . Webmasterworld.com.
Retrieved 2009-12-17.
104. John Resig. "Versions of
JavaScript" . Ejohn.org. Retrieved
2009-05-19.
105. "What Version of Javascript" .
Javascript.about.com. 2016-02-22.
Retrieved 2017-02-24.
106. "RFC 822 - STANDARD FOR THE
FORMAT OF ARPA INTERNET TEXT
MESSAGES" . Tools.ietf.org. 1982-08-13.
Retrieved 2017-02-24.
107. Release Notes for the Next-
Generation Java™ Plug-In Technology
(introduced in Java SE 6 update 10) .
Java.sun.com. Retrieved on 2013-06-13.
108. "frequently asked questions" .
asm.js. Retrieved 2014-04-13.
109. "Home" . p5.js. 2017-01-21. Retrieved
2017-02-24.
110. "Home" . dspace.thapar.edu:8080.
2016-08-26. Retrieved 2016-08-26.
111. Ralph Sommerer. "Oberon Script. A
Lightweight Compiler and Runtime System
for the Web" . research.microsoft.com.
Retrieved 2015-12-18.
112. "New in JavaScript 1.7" .
Developer.mozilla.org. 2012-12-05.
Retrieved 2013-05-26.
113. Sébastien Doeraene. "Scala.js" .
Lampwww.epfl.ch. Retrieved 2014-04-13.
114. "Whalesong: a Racket to JavaScript
compiler" . Hashcollision.org. Retrieved
2014-04-13.
115. Walton, Zach (2012-04-04). "Easily
Port C++ To HTML5/JavaScript With
Emscripten" . WebProNews. iEntry
Network.
116. "clojure/clojurescript · GitHub" .
Github.com. Retrieved 2014-04-13.
117. Brendan Eich (3 April 2008).
"Popularity" . Retrieved 2012-01-19.
Further reading
Bhangal, Sham; Jankowski, Tomasz
(2003). Foundation Web Design:
Essential HTML, JavaScript, CSS,
PhotoShop, Fireworks, and Flash.
APress L. P. ISBN 1-59059-152-6.
Burns, Joe; Growney, Andree S. (2001).
JavaScript Goodies. Pearson
Education. ISBN 0-7897-2612-2.
Duffy, Scott (2003). How to do
Everything with JavaScript. Osborne.
ISBN 0-07-222887-3.
Flanagan, David (2006). JavaScript:
The Definitive Guide (5th ed.). O'Reilly &
Associates. ISBN 0-596-10199-6.
Flanagan, David (2011). JavaScript:
The Definitive Guide (6th ed.). O'Reilly &
Associates. ISBN 978-0-596-80552-4.
Goodman, Danny; Eich, Brendan
(2001). JavaScript Bible. John Wiley &
Sons. ISBN 0-7645-3342-8.
Goodman, Danny; Markel, Scott (2003).
JavaScript and DHTML Cookbook.
O'Reilly & Associates. ISBN 0-596-
00467-2.
Harris, Andy (2001). JavaScript
Programming for the Absolute Beginner.
Premier Press. ISBN 0-7615-3410-5.
Haverbeke, Marijn (2011). Eloquent
JavaScript. No Starch Press. ISBN 978-
1-59327-282-1.
Heinle, Nick; Koman, Richard (1997).
Designing with JavaScript. O'Reilly &
Associates. ISBN 1-56592-300-6.
Husted, Robert; Kuslich, JJ (1999).
Server-Side JavaScript: Developing
Integrated Web Applications (1st ed.).
Addison-Wesley. ISBN 0-201-43329-X.
McDuffie, Tina Spain (2003).
JavaScript Concepts & Techniques:
Programming Interactive Web Sites.
Franklin, Beedle & Associates. ISBN 1-
887902-69-4.
McFarlane, Nigel (2003). Rapid
Application Development with Mozilla.
Prentice Hall Professional Technical
References. ISBN 0-13-142343-6.
Powell, Thomas A.; Schneider, Fritz
(2001). JavaScript: The Complete
Reference. McGraw-Hill Companies.
ISBN 0-07-219127-9.
Shelly, Gary B.; Cashman, Thomas J.;
Dorin, William J.; Quasney, Jeffrey J.
(2000). JavaScript: Complete Concepts
and Techniques. Cambridge: Course
Technology. ISBN 0-7895-6233-2.
Vander Veer, Emily A. (2004).
JavaScript For Dummies (4th ed.).
Wiley Pub. ISBN 0-7645-7659-3.
Watt, Andrew H.; Watt, Jonathan A.;
Simon, Jinjer L. (2002). Teach Yourself
JavaScript in 21 Days. Pearson
Education. ISBN 0-672-32297-8.
Zakas, Nicholas C. (2012). Professional
JavaScript for Web Developers (3rd
ed.). Wrox. ISBN 978-1-118-02669-4.
External links
Listen to this article (info/dl)
0:00
This audio file was created from a revision of the article "JavaScript" dated 2013-08-20, and does not reflect subsequent edits to the article. (Audio
help)