Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
24 views

Chapter4 Client Side Programming JavaScript

Uploaded by

nickma031221
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
24 views

Chapter4 Client Side Programming JavaScript

Uploaded by

nickma031221
Copyright
© © All Rights Reserved
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 152

WEB TECHNOLOGIES

A COMPUTER SCIENCE PERSPECTIVE

JEFFREY C. JACKSON

Chapter 4
Client-Side Programming:
the JavaScript Language

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
An example: “Rollover” effect
• Please run Rollover.html in chapter 5
Cursor not over image Image changes when cursor
moves over

This Rollover effect is implemented by calling JavaScript functions in a


HTML document.

This chapter will focus on JavaScript itself (such as JavaScript Syntax)


Next chapter will cover how to use JavaScript to write dynamic webpages
Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript History and Versions
• JavaScript was introduced as part of the
Netscape 2.0 browser
• Microsoft soon released its own version
called JScript
• ECMA developed a standard language
known as ECMAScript
• ECMAScript Edition 3 is widely supported
and is what we will call “JavaScript”

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Introduction
• Let’s write a “Hello World!” JavaScript
program
• Problem: the JavaScript language itself
has no input/output statements(!)
• Solution: Most browsers provide de facto
standard I/O methods; JavaScript can call
these methods.
– alert: pops up alert box containing text
– prompt: pops up window where user can
enter text
Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Introduction
Please run JSHelloWorld.html in chapter 4

• Alert box example (providing output)


– Web page and alert box generated by
JSHelloWorld.html document and
JSHelloWorld.js code:

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Introduction
• File JSHelloWorld.js:

window is a JavaScript object; how to create it and use it is explained later.


• File JSHelloWorld.html executing this code:

script element used


to load and execute
JavaScript code

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Introduction
Steps to display the prompt window (as done in the example of JSHelloWorld.html)
•Write a JavaScript file containing the JavaScript code listed below
•Imbed the JavaScript file into an HTML document
•Run the HTML document
• Prompt window example (providing input):
//JavaScript Code:
var inString = window.prompt("Enter JavaScript code to be tested:", "");
document.writeln( inString ); //print user’s input in client area

• result = window.prompt(text, value);


• text is a string to display to the user.
• value is a string containing defualt value (in Input field), which can be changed by user
Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0

• result is the string entered by the user, which is returned by prompt().


JavaScript Properties
• JavaScript and Java are complete different
languages
• Note that JavaScript code did not need to be
compiled
– JavaScript is an interpreted language
– Portion of browser software that reads and executes
JavaScript is an interpreter
• Interpreted vs. compiled languages:
– Advantage: simplicity
– Disadvantage: efficiency

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Properties
• JavaScript is a scripting language:
designed to be executed within a larger
software environment
• JavaScript can be run within a variety of
environments:
– Web browsers (our focus in next chapter)
– Web servers
– Application containers (general-purpose
programming)

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Properties
• Components of a JavaScript implementation:
– Scripting engine: interpreter plus required ECMAScript
functionality (core library)
• The primary component (the focus of this chapter)
• Must be present regardless of the script environment.
– Hosting environment: provide environment-specific
capabilities (to JavaScript programs) running within
the environment
• Example: The alert() and prompt() methods are part of the
hosting environment of Mozilla and IE6.
• All hosting environment functionality is provided via objects

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Properties
• All data in JavaScript is an object or a
property of an object
• Types of JavaScript objects
– Native: provided by scripting engine
• If automatically constructed before program
execution, known as a built-in object (ex: window)
– Host: provided by host environment
• alert and prompt are host objects
• It is constructed as a result of a call to a
constructor during program execution
Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Developing JavaScript Software
• Writing JavaScript code
– Any text editor (e.g., Notepad, Emacs)
– Specialized software (e.g., MS Visual
InterDev)
• Executing JavaScript
– Load into browser (need HTML document)
– Browser detects syntax and run-time errors
• Mozilla: JavaScript console lists errors
• IE6: Exclamation icon and pop-up window

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Running Examples
• Run TestJs.html in chapter 4 and input
HighLow.js in prompt box
• This program plays the high-low guessing
game with user.

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Basic JavaScript Syntax

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Basic JavaScript Syntax
Notice that there is no main() function/method

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Basic JavaScript Syntax
Comments like Java/C++ (/* */ also allowed)

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Basic JavaScript Syntax
Variable declarations:
- Not required
- Data type not specified

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Basic JavaScript Syntax

Semi-colons are usually


not required, but always
allowed at statement end

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Basic JavaScript Syntax

Arithmetic operators same as Java/C++

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Basic JavaScript Syntax

String concatenation operator


as well as addition

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Basic JavaScript Syntax

Arguments can be any expressions

Argument lists are comma-separated

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Basic JavaScript Syntax

Object dot notation for method calls as in Java/C++

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Basic JavaScript Syntax

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Basic JavaScript Syntax
Many control constructs and use of
{ } identical to Java/C++

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Basic JavaScript Syntax
Most relational operators syntactically
same as Java/C++

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Basic JavaScript Syntax
Automatic type conversion:
guess is String,
thinkingOf is Number

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Variables and Data Types
• Type of a variable is dynamic: depends on the
type of data it contains
• JavaScript has six data types:
– Number
– String
– Boolean (values true and false)
– Object
– Null (only value of this type is null)
– Undefined
• the type of the value represented by any variable (that has
been declared but has not yet been assigned a value).
• Primitive data types: all but Object
Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Variables and Data Types
• typeof operator returns string related to
data type
– Syntax: typeof expression
• Example:

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Variables and Data Types

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Variables and Data Types
• Common automatic type conversions:
– Compare String and Number: String value
converted to Number
– Condition of if or while converted to
Boolean
– Array accessor (e.g., 3 in records[3])
converted to String, i.e., 3  “3”.

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Variables and Data Types

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Variables and Data Types

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Variables and Data Types

Special Number values (“Not a Number” and number too large to represent)
For example,
•0/0 produces NaN
•any positive number divided by 0 produces Infinity.

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Variables and Data Types

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Variables and Data Types
• Syntax rules for names (identifiers):
– Must begin with letter or underscore ( _ )
– Must contain only letters, underscores, and
digits (or certain other characters)
– Must not be a reserved word

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Variables and Data Types

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Variables and Data Types
• A variable will automatically be created if a
value is assigned to an undeclared
identifier:
var is not
required

• Recommendation: use var to declare all


variables
– Facilitates maintenance
– Avoids certain exceptions
Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Statements
• Expression statement: any statement that
consists entirely of an expression
– Expression: code that represents a value

• Block statement: one or more statements


enclosed in { } braces
• Keyword statement: statement beginning
with a keyword, e.g., var or if

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Statements
• var syntax:
Comma-separated declaration list with
optional initializers

• Java-like keyword statements:

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Statements
Please run TestJs.html in chapter 4 and input KeywordStmts.js

JavaScript
keyword
statements
are very similar
to Java with
small exceptions

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Statements

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Statements

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Statements

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Operators
• Operators are used to create compound
expressions from simpler expressions
• Operators can be classified according to
the number of operands involved:
– Unary: one operand (e.g., typeof i)
• Prefix or postfix (e.g., ++i or i++ )
– Binary: two operands (e.g., x + y)
– Ternary: three operands (conditional operator)

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Operators

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Operators
• Associativity:
– Assignment, conditional, and prefix unary
operators are right associative: equal-
precedence operators are evaluated right-to-
left:

– Other operators are left associative: equal-


precedence operators are evaluated left-to-
right

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Operators:
Automatic Type Conversion
• Binary operators +, -, *, /, % convert both
operands to Number
– Exception: If one of operands of + is String
then the other is converted to String
• Relational operators <, >, <=, >= convert
both operands to Number
– Exception: If both operands are String, no
conversion is performed and lexicographic
string comparison is performed
• lexical order (dictionary order): a1a2 ... ak appears before in b1b2
... bk if and only if the first ai, which is different from bi, comes
before bi in the alphabet.
Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Operators:
Automatic Type Conversion
• The equality (==) and inequality (!=) operators
convert both operands to Number
– Exception: If both operands are String, no conversion is
performed (lexicographic comparison)
– Exception: values of Undefined and Null are equal(!)
– Exception: instance of Date built-in object is converted to
String
– Exception: host object conversion is implementation
dependent
• i.e., host object conversion method is not clearly defined in
standard and is regulated by language developers.
– Exception: two Objects are equal only if they are
references to the same object
Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Operators:
Automatic Type Conversion
• The strict equality (===) and strict inequality
(!== ) operators are strict:
– Two operands are === only if they are of the
same type and have the same value
– “Same value” for objects means that the
operands are references to the same object
• Unary +, - convert their operand to Number

• Logical &&, ||, ! convert their operands to


Boolean (normally)
Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Operators
• Bit operators
– Same set as Java:
• Bitwise NOT, AND, OR, XOR (~, &, |, ^)
• Shift operators (<<, >>, >>>)
– Semantics:
• Operands are converted to 32-bit twos-complement
integers: convert to Number if needed, truncate to
integer, retain only low-order 32 bits.
• Operators then applied as if in 32-bit registers
• Result of >>> treated as unsigned, others as signed
(results of other operators are treated as signed)
Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Operators
• Example(Result of >>> treated as unsigned, others as signed):
-2

1: 0 0 … 01
~1: 1 1 … 10 (=-2 if it is treated a singed number)
1) Note that ~1 is negative since it starts with 1.
2) Invert the bits: 1 1 … 1 1 0 00… 001
3) Add 1: 0 0 … 0 0 1 + 1  0 0 …. 0 1 0 = 2(10)
4) Final result: -2 since ~1 is a negative

4294967294 (232 – 2)

1: 0 0 … 01
~1: 1 1 … 10 (= 2^32-2 if it is treated an unsigned number)
1) Note that ~1 is positive since it is treated as unsigned
2) Simply convert positive number to decimal:
1 1 … 10(2) =1 1 … 11(10) -1(10) = 2^32-2(10)
Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Numbers
• Syntactic representations of Number
– Integer (42) and decimal (42.0)
– Scientific notation (-12.4e12, i.e., -12.4*10^12)
– Hexadecimal (0xfa0)
• Internal representation
– Approximately 16 digits of precision
– Approximate range of magnitudes
• Smallest: 10-323
• Largest: 10308 (Infinity if literal is larger)

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Strings
• String literals can be single- or double-
quoted
• Like Java, escape codes can be
embedded in string literals
– \n: represent newline
– \” (\’): represent a double (single) quote
– \\: represent a backslash
– \uxxxx: arbitrary Unicode 16-bit code point
(x’s are four hex digits)
Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Functions
• Function declaration syntax

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Functions
• Function declaration syntax

Declaration
always begins
with keyword
function,
no return type

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Functions
• Function declaration syntax
Identifier representing
function’s name

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Functions
• Function declaration syntax

Formal parameter list

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Functions
• Function declaration syntax

One or more statements representing


function body

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Functions
• Function call syntax

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Functions
• Function call syntax

Function call is an expression, can


be used on right-hand side of assignments,
as expression statement, etc.

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Functions
• Function call syntax

Function name

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Functions
• Function call syntax

Argument list

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Functions
• Function call semantics:

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Functions
• Function call semantics:

Argument value(s)
associated with corresponding
formal parameters

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Functions
• Function call semantics:

Expression(s) in body
evaluated as if formal
parameters are variables
initialized by argument
values

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Functions
• Function call semantics:

If final statement executed


is return-value, then value of
its expression becomes value
of the function call

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Functions
• Function call semantics:

Value of function call is then used


in larger expression containing
function call.

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Functions
• Function call semantics details:
– Arguments:
• May be expressions:
• Object’s effectively passed by reference (more
later)
– Formal parameters:
• May be assigned values, argument is not affected
– Return value:
• If last statement executed is not return-value, then
returned value is of type Undefined

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Functions
• Number mismatch between argument list
and formal parameter list:
– More arguments: excess ignored
– Fewer arguments: remaining parameters are
Undefined

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Functions
• Local vs. global variables
Global variable: declared outside any function

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Functions
• Local vs. global variables

Local
variable
declared
within
a function

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Functions
• Local vs. global variables

Local
declaration
shadows
corresponding
global
declaration
Output is 6

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Functions
• Local vs. global variables

In browsers,
global
variables Output is 7
(and functions)
are stored as properties
of the window built-in object.

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Functions
• Recursive functions
– Recursion (function calling itself, either
directly or indirectly) is supported
– C++ static variables are not supported
– Order of declaration of mutually recursive
functions is unimportant (no need for
prototypes as in C++)

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Functions
• Explicit type conversion supplied by built-
in functions
– Boolean(), String(), Number()
– Each takes a single argument, returns value
representing argument converted according to
type-conversion rules given earlier

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Object Introduction
• An object is a set of properties
• A property consists of a unique (within an
object) name with an associated value
• The type of a property depends on the
type of its value and can vary dynamically
prop is Boolean
prop is now String
prop is now Number

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Object Introduction
• There are no classes in JavaScript but
some classlike features:
– Define object constructors to create objects.
– Provide a form of inheritance.
• Instead, properties of an object can be
created and deleted dynamically
Create an object o1
Create property testing
Delete testing property
In contrast, in Java and C++, we
•first define class (its variables and method).
•then create objects of the class.
Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Object Creation
• Objects are created using new expression
Constructor and argument list

• A constructor is a function
– A new expression causes a new empty object to be
created, and then calls the specified constructor
along with the argument values.
– Constructor performs initialization on object
• Can add properties and methods to object
• Can add object to an inheritance hierarchy (from which it
can inherit additional properties and method)
Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Object Creation
• The Object() built-in constructor
– It does not add any properties or methods
directly to the created object, but
– the created object is modified so that it
inherits some generic methods such as
toString() and valueOf() methods (used for
conversions to String and Number, resp.)

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Property Creation
• Assignment to a non-existent (even if
inherited) property name creates the
property:
• Object initializer notation can be used to
create an object (using Object()
constructor) and one or more properties in
a single statement:

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Enumerating Properties
• Special form of for statement used to
iterate through all properties of an object:

Produces three
alert boxes;
order of names
is implementation-dependent.

Please run Enumerating.html in chapter 4 and read Enumerating.js


Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Accessing Property Values
• The JavaScript object dot notation is
actually shorthand for a more general
associative array notation in which Strings
are array indices:

• Expressions can supply property names:

Converted to String
if necessary

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Object Values
• Value of Object is reference to object:
– What is stored in a JavaScript Object variable
is a reference (pointer) to the object, not the
object itself, as in Java.
Java
data type: Object ( 对象类型 )
data : object ( 对象 )

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Object Values
• Value of Object is reference to object:

o2 is another
name for o1 Copy the reference from o1 to
o2, rather than making a copy of
the entire object.

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Object Values
• Value of Object is reference to object:

o1 is
changed

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Object Values
• Value of Object is reference to object:

Output is Hello World!

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Object Values
• Object argument values are references
– Pass by reference, not by value.

window.alert (“o1 is ” + o1.data + “\n” + “o2 is ” + o2.data )

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Object Values
• Object argument values are references

param1=o1; Pass by reference, not by value param2=o2;

var o1 = new Object(); var o2 = new Object();


o1.data = “original”; o2.data = “original”;

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Object Values
• Object argument values are references

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Object Values
• Object argument values are references

Copy the reference from


window.alert (“param1 is ” + param1 to param2,

param1.data + “\n” +
“param2 is ” + param2.data )

return;
}

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Object Values
• Object argument values are references

Please run TestJs.html in chapter 4 and input ObjArg.js


*I will test the program.
Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Object Methods
• A method is a function that has been assig-
ned as the value of a property of an object.
object
• When JavaScript process a function
declaration, such as function leaf () {…}
– create a function object,
– create a variable (property of Window), which has
the same name as the function,
– assign to the variable a reference (to the function
object).

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Object Methods

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Object Methods
Creates global variable named leaf, which refers to the leaf() function object

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Object Methods

Creates isLeaf() method

Here, leaf is a variable referring to the leaf() function object.


Assign to the isLeaf method the leaf variable,
•Assign to the isLeaf method a reference to the leaf() function object.
Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Object Methods
Refers to object that “owns” method when
leaf() is called as a method

value

null null

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Object Methods
3
7

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Object Methods
Creates two objects, each with
method isLeaf()

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Object Methods

Calls to isLeaf() method

Please run TestJs.html in chapter 4 and input NodeWithMethod.js.


Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Object Methods
• Original version: leaf() can be called as
function, but we only want a method

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Object Methods
• Alternative:

Replace leaf by a function expression.

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Object Methods
• Alternative

Function expression syntactically is the same as funct-


ion declaration but does not produce a global variable.

Consequently, other objects cannot call leaf() directly


by calling the variable leaf.
Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Object Constructors
• User-defined constructor is just a function
called using new expression:

Constructor
• Object created using a constructor is
known as an instance of the constructor

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Object Constructors
Two methods to define a constructor.
•The first method acts as a kind of constructor for objects.
•The second method use JavaScript’s constructor mechanism.

Original
function

Function
intended
to be used
as constructor

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Object Constructors

Object is
constructed
automatically
by new
expression

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Object Constructors

Object
referenced
using this
keyword

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Object Constructors

No need
to return
initialized
object

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Object Constructors
• Object created using a constructor is
known as an instance of the constructor

Instances of BTNode
• instanceof operator can be used to test
this relationship:

Evaluates to true

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Arrays
• The Array built-in object can be used to
construct objects with special properties
and that inherit various methods

ary1
length (0) Properties

toString() Inherited
sort() methods
shift()

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Arrays
• The Array built-in object can be used to
construct objects with special properties
and that inherit various methods

ary2
length (3) Accessing array elements:
“0” (4) ary2[1]
Elements
“1” (true) ary2[“1”]
of array
“2” (“OK”) ary2.1
Must follow identifier
toString() syntax rules

The reason is: ary2.1 will evaluate to the value of the property with the name 1.
However, in dot notation, the property name must not begin with a numeric character.
Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Arrays
• The Array constructor is indirectly called
if an array initializer is used

• Array initializiers can be used to create


multidimensional arrays
ttt[1][2]

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Arrays
• Changing the number of elements:

Creates a new element dynamically,


increases value of length
ary2
length (4)
“0” (4)
“1” (true)
“2” (“OK”)
“3” (-12.6)

toString()

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Arrays
• Changing the number of elements:

Decreasing length can delete elements

ary2
length (2)
“0” (4)
“1” (true)

toString()

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Arrays
• Value of length is not necessarily the
same as the actual number of elements
var ary4 = new Array(200); Calling constructor with single argument
sets length, does not create elements
ary4
length (200)

toString()
sort()
shift()

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Arrays

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Arrays

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Arrays

Argument to sort
is a function

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Sort() function in JavaScript Array
• To sort something other than strings into
alphabetical order, write a function that performs
the comparison and send it to the sort method

– The comparison function must return a negative


number, zero, or a positive number to indicate whether
the order is ok, equal, or not

– Example 1: to sort a set of numbers in ascending order.


var num_list = [8, 3, 9, 1, 4, 7];
function num_order(a, b) {return a - b;} //the smaller is on first
num_list.sort(num_order);

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Sort() function in JavaScript Array
• Example 2: to sort a set of words in alphabetical
order and alphabetical reverse order.
var str_list = [ab, abd, xaix, zyy, eez, ccd, wzx];
function dec_order(a, b) {
if (a//the
> b)larger is on first
return -1;
else if (a < b)
return 1;
else return 0;
}
str_list.sort(); //sorting in alphabetical order
str_list.sort (dec_order); //sorting in alphabetical reverse order

str_list.Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0


JavaScript Arrays
Q: how about sorting in descending order?
Remember to call sort() at an appropriate position.
*I will test this problem.

Return negative if first < second, indicating that


the smaller is on first, the larger is on second

Return a string (separated by ,) representing the array

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Arrays

Add element with value 2.5 at


index 2, shift existing elements

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Arrays

Remove 3 elements starting


at index 5

Please run TestJs.html in chapter 4 and input ArrayMethods.js.


Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Arrays

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Arrays

push() adds an element to the end of the


array

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Arrays

pop() deletes and returns last


element of the array

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Arrays

Use shift() instead to implement queue

Please run TestJs.html in chapter 4 and input stack.js.


Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Built-in Objects
• The global object
– Named window in browsers
– Has properties representing all global
variables
– Other built-in objects are also properties of
the global object
• Ex: initial value of window.Array is Array object
– Has some other useful properties
• Ex: window.Infinity represents Number value

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Built-in Objects
• The global object and variable resolution:
i = 42; What does i refer to?
1. Search for local variable or formal parameter
named i
2. If none found, see if global object (window)
has property named i

• This is why we can refer to built-in objects


(Object, Array, etc.) without prefixing
with window.

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Built-in Objects
• If String(), Boolean(), and Number() built-in
functions can be called as constructors,
– it converts its argument value to the appropriate type
– It also wraps the converted value in an object, “wrapped” object.
• For example, wrappedNumber is an instance of Number.

• Instances inherit valueOf() method that


returns wrapped value of specified type:

Output is “number”

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Built-in Objects
• Other methods inherited by Number
instances:
Outputs
Return a string representation of a number rounded to two decimal places
5.63
Return a string representation of a number in exponential notation
5.63e+0
Return a string representation of a number in binary
101.101
Base 2

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Built-in Objects
• Properties provided by Number built-in
object:
– Number.MIN_VALUE: smallest (absolute
value) possible JavaScript Number value
– Number.MAX_VALUE: largest possible
JavaScript Number value

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Built-in Objects

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Built-in Objects
• Instances of String have a length property (number of
characters)

• JavaScript’s automatic type conversion allows you to


apply String and Number inherited methods directly to
primitive values of type String and Number, respectively:
– In this example, “a String values” is converted to a String object,
automatically.

Index= 2 Output is “Str”

slice() return substring from index 2 to index 4, excluding index 5.

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Built-in Objects
• The Date() built-in constructor can be used to
create Date instances that represent the current
date and time
var now = new Date();

• Often used to display local date and/or time in


Web pages
window.alert(“Current date and time: “
+ now.toLocaleString());
• Other methods: toLocaleDateString() ,
toLocaleTimeString(), etc.

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Built-in Objects
• valueOf() method inherited by Date
instances returns integer representing
number of milliseconds since midnight
1/1/1970
• Automatic type conversion allows Date
instances to be treated as Numbers:

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Built-in Objects
• Math object has methods for performing
standard mathematical calculations:

• Also has properties with approximate


values for standard mathematical
quantities, e.g., e ( Math.E ) and π
(Math.PI)

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
Built-in Objects

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Regular Expressions
• A regular expression is a particular
representation of a set of strings
– Ex: JavaScript regular expression
representing the set of syntactically-valid US
telephone area codes (three-digit numbers):

• \d represents the set {“0”, “1”, …, “9”}


• Concatenated regular expressions represent the
“concatenation” (Cartesian product) of their sets

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Regular Expressions
• Using regular expressions in JavaScript

In this example, we use this regular expression to test whether or not a


String value (contained in areaCode) consists of exactly three digits.
Generate an instance of the RegExp object.
Call the test method of the instance

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Regular Expressions
• Using regular expressions in JavaScript

Variable containing string to be tested

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Regular Expressions
• Using regular expressions in JavaScript

Method inherited by RegExp instances:


returns true if the argument, areaCode, contains a
substring in the regular expression

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Regular Expressions
• Using regular expressions in JavaScript
Built-in constructor

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Regular Expressions
• Using regular expressions in JavaScript
Regular expression as String (must escape \)

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Regular Expressions
• Using regular expressions in JavaScript
The caret(^), represents beginning of string The dollar sign ($), represents end of string

This expression matches only strings with


exactly three digits (no other characters,
even white space)

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Regular Expressions
– Example: a regular expression without $

Represents all strings that begin


with three digits

• Alternate syntax:

Regular expression literal.


Do not escape \.

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Regular Expressions
• Simplest regular expression is any character
that is not a special character:

– Ex: _ is a regular expression representing {“_”},


– {“_”}, represent the set of all string that
contain the underscore character, _. _
• Backslash-escape d special character is also
a regular expression
– Ex: \$ represents {“$”}

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Regular Expressions
• Special character . (dot) represents any
character except a line terminator
• Several escape codes are regular
expressions representing sets of chars:

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Regular Expressions
• Three types of operations can be used to
combine simple regular expressions into
more complex expressions:
– Concatenation
– Union (|)
– Kleene star (*)
• XML DTD content specification syntax
based in part on regular expressions

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Regular Expressions
• Concatenation
– Example:
• String consisting entirely of four characters:
• Digit followed by
• A . followed by
• A single space followed by
• Any “word” character
– Quantifier shorthand syntax for concatenation:

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Regular Expressions
• Union (represented by the pipe symbol, |)
– Ex:
• Set of single-character strings that are either a digit
or a space character

• Character class: shorthand for union of


one or more ranges of characters
– Ex: set of lower case letters
– Ex: the \w escape code class

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Regular Expressions
• Unions of concatenations

– Note that concatenation has higher precedence


than union
• Optional regular expression
– The question mark ? represents {0,1}

– (+|-){0,1} represents the set of strings that begin with either (+|-)
{0} (i.e., the empty string) or (+|-){1} (i.e a plus or minus sign}.
– In other words, (+|-){0,1} represents that (+|-) is optional.
Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0
JavaScript Regular Expressions
• Kleene star (allows us to represent infinitely large sets)
– Ex: Strings of any number of digits
(including none)
• \d* represents “”, “1”, “238”, “3455567”, ……

– Ex:
• Strings consisting of only “word” characters
• String must contain both a digit and a letter (in either
order)

Jackson, Web Technologies: A Computer Science Perspective, © 2007 Prentice-Hall, Inc. All rights reserved. 0-13-185603-0

You might also like