www.ens.utulsa.edu

Download Report

Transcript www.ens.utulsa.edu

Overview of JavaScript
•Developed by Netscape, as LiveScript
•Became a joint venture of Netscape and
Sun in 1995, renamed JavaScript
•Now standard of the European Computer
Manufacturers Association
ECMA-262
(also ISO 16262)
JavaScript
•
Three categories
 Core,
Client-side,
& Server-side
•
Collections of JavaScript code as called scripts
•
Java and JavaScript only related through syntax
 JavaScript
is dynamically typed
 JavaScript's
•
support for objects is very different
JavaScript can be embeded in many things, but its
primary use is in HTML
JavaScript
•
•
•
DocumentObject Model (DOM) makes it possible
to support dynamic HTML with JavaScript
Promotes user interaction through forms
User interactions with HTML documents in
JavaScript use the event-driven model of
computation
 User
interaction with form elements can be used to
trigger scripts
OO & JavaScript
•
JavaScript is not OO programming language
 Does

not support class-based inheritance
Cannot support polymorphism
 Prototype-based

inheritance
Which is much different
JavaScript Objects
•
Objects are collections of properties (like
members of the class in Java)
 Data
properties
 Method
•
•
•
properties
Primitives for simple types
JavaScript objects are accessed through
references
Objects appear as lists of property-value pairs
 Properties
can be added or deleted dynamically
JavaScript General Syntax
•
Embeded in HTML documents
 Directly
as the content of <script> tag
<script language =”JavaScript” > ... </script>
 Indirectly
as a file specified in the src attribute of
script
<script language =”JavaScript” src=myscript.js”> ...
</script>
JavaScript General Syntax
•
•
Place scripts inside HTML comments to hide
them from bowsers that do not include JavaScript
interpreters
JavaScriot does not need to be terminated by ;
 But
it is a good practice to do so
Primitives, Operations & Expressions
•
Primitive values, one of five:
Number,
•
•
String, Boolean, Undefined, or Null
Number, String, and Boolean have wrapper
objects: Number, String, & Boolean
Primitive values and objects of Number & String
are coerced back and forth
 Primitive
objects
values are treated essentially as if they were
Primitives, Operations & Expressions
•
•
•
Numeric literals are just as in Java
Numeric values are stored in double-precision
floating point
String literals are delimited by ' or “
Can
include scape sequences (\t)
Embedded
String
variable names are not interpolated
literals are primitive values
Primitives, Operations & Expressions
•
Boolean values are true and false
•
The only value of Null is null
•
The only Undefined value is undefined
•
JavaScript is dynamically typed
Any
variable can be used for any thing
Primitive value or reference to any object
The interpreter determines type of each
occurrence of a variable

Primitives, Operations & Expressions
•
Variables declared explicitly or implicitly
var = sum = 0,
today = “Monday”,
flag = false ;
•
Numeric operators: ++, - -, +, -, *, /, %
 All
•
in double precision
The Math object
 Floor,
•
round, max, min, trig functions, etc.
Assignment opperator – Just like Java
Primitives, Operations & Expressions

The Number object with method toString
 Some
useful properties:
MAX_VALUE, MIN_VALUE, NaN,
POSITIVE_INFINITY, NEGATIVE_INFINITY, PI

Number .MAX_VALUE
 Arithmetic
operation creates overflow returns NaN
 NaN
is not == to any other number, not even itself
 Test
for it with isNaN(x)
Primitives, Operations & Expressions

String catenation operator: +

Coercions:
 Catenation
 Numeric

coerces numbers to strings
operators (not +) coerce strings to numbers
Conversions from strings to numbers that do not
work return NaN
Primitives, Operations & Expressions

String properties & methods:
length e.g., var len = str1.length; (a
property)
charAt(position) e.g., str.charAt(3)
indexOf(string)
e.g., str.indexOf('B')
substring(from, to) e.g., str.substring(1, 3)
toLowerCase() e.g., str.toLowerCase()
Primitives, Operations & Expressions

Conversion functions (not called through string objects,
because these are not methods)
 parseInt(string)
and parseFloat(string)
String must begin with a digit or a sign and
contain a legal number, otherwise NaN is
returned
 The typeof operator

Returns “number, “string”, or “boolean” for
primitives
 Returns “object” for objects and null

Screen Output


The Document object is the JavaScript model
for the HTML document
The Window object in the model for the browser
display window
 Two

properties: document, and window
Referring to Document and Window objects
Screen Output

The Document object has a method, write,
 Dynamically
 Parameter
creates content
is a string that is sent to the browser
it can be any thing that can appear in HTML
including tags
 Parameter often catenated from parts some of which
are variables

document.write(“It is OK” + “to learn about” +
“<br />”) ;
Screen Output

The Window object has three methods

alert, confirm, and prompt
 The
default object is the current window
Object need not be included in calls to any of these
 Alert( “ Hello World! \n”)



Parameter plain text, not HTML
Opens a dialog box which displays the parameter string and
an OK button
Waits
for used to press the OK button
Screen Output

Confirm (“What would you like?”)

Opens a dialog box, displays the parameter and
two buttons, OK and cancel
Returns a Boolean
 prompt(“What is your pleasure?”,””)



Opens a dialog box, displays the parameter, along
with a text box and two buttons, OK and cancel
The second parameter is for default value if the
user presses OK without typing any response
Control Expressions


Primitive Values
 If
it is string, it is true unless it is empty or “0”
 If
it is a number, it is true unless it is zero
Relational Expressions: ==, !=, <, >, >=, >=
 Operands
coerced if necessary
String to number / Boolean to number
 Unusual: ===, !==


Same as == and !=, except that no coercions are
allowed. Operands must be identical
Control Expressions

Compound expressions &&,
||, and !
 Primitive
values, true and false, not to be confused
with Boolean Object properties


Boolean object in a expression is false only when it is null
or undefined
Boolean object has a method, toString, to allow them to be
printed out.
Selection Statements

If-then-else --Just as in Java

Switch
switch (expression) {
case value_1:
// value_1 statements
case value_2:
// value_2 statements
…
[default:
}
// default statements]
Control Statements

Loop Statements
 while(control_expression)
Statement or compound
 For(
int ; control ; increment)
Statement or compound
 Int
can have declaration, but scope is the whole script
 do
Statement or compound
while( control_expression)
Object Creation/Modification

Objects created with new

Most basic object uses the object constructor
 Var
myobject = new object();

New object has no properties - a blank object

Properties can be added to object at any time
var mycar = new object();
mycar.make = "volvo";
mycar.model = "245";
Object Creation/Modification

Objects can be nested. A property can be itself
another object created with new.
Var property1 = mycar["model"];


Attempting to access non-existing properties
yields undefined
Properties can be deleted with delete:
delete mycar.model;
Object Creation/Modification

The for-in loop-statement is perfect for listing the
properties of an object:
for( identifier in object)
statement or compound
Ex:
for( var prop in mycar)
document.write(mycar[prop] +"<br />");
Arrays



Objects having some special functionality
Array elements can be primitive values or
references to other objects.
Array objects can be created in two ways:
 With
new:
var mylist = new Array(24,"butter", false);//length is 3.
var mylist2 = new Array(24) /* length is 25 */
 Assigning
an array literal:
var mylist3 = [24, "eggs", false];
Arrays


Length is dynamic -length property stores it.
Length is highest subscript to which an element
has been assigned, plus 1
mylist[122] = "wee-small"; // length is 123

length property is writeable
mylist.length =150; //make it larger
mylist.length = 2; //make it shorter

Only assigned elements take up memory space
http://www.ens.utulsa.edu/~class_diaz/cs2043/insert_names.html
Array Methods
var list = new Array("John","Paul","George","Ringo");

join - var listStr = list.join(": ");
listStr contains "John: Paul: George: Ringo"



reverse
sort -coerces elements to strings and puts them
in alph order
concat - newList = list.concat(47,26);
Array Methods

slice
listPart = list.slice(1,3); // listPart is ["Paul","Ringo"]
listPart = list.slice(2); // listPart is ["George","Ringo"]

toString -- exactly as join(", ")

push, pop, unshift, shift
http://www.ens.utulsa.edu/~class_diaz/cs2043/nested_arrays.htm
JavaScript Functions
function function_name( formal_arguments){
... // function_body
}

A return statement turns control to caller.
 A function



returns undefined when:
End of the function is reached, or
Specific return statement executed does not have
expression
There are no return statements in the function
Functions

Functions are objects!
 Variables
that reference them can be treated as any
other object reference:

Can be passed as paramenters,

Can be assigned variables,

Can be elements of an array
ref_fun = fun; // where fun is the name of a function
/* ref_fun is a reference to fun*/
ref_fun(); /* A call to fun */
Functions




All variables declared, implicitly or explicitly,
outside functions have global scope.
Variables explicitly declared in a function have
local scope.
Local variables have precedence over global
variables with the same name.
Functions can be nested - we will not discuss it.
Function Parameters



JavaScript functions parameters are normally
passed-by-value.
There is not type checking of parameters.
There is no checking on the number of
parameters:
excess actual parameters are ignored
excess formal parameters are set to undefined.
Function Parameters

All parameters passed through a property array,
arguments.
 A function
can determine the number of actual
parameters by accessing arguments.length
 Because
the arguments array is accessible directly, all
actual parameters in the call are available, including
the actual parameters that do not correspond to any
formal parameters
http://www.ens.utulsa.edu/~class_diaz/cs2043/parameters.ht
m
Function Parameters


When a reference is passed, the function has
access to objects in the calling program. Hence it
can also pass-by-reference objects.
There is no clean way to send a primitive by
reference
Function by10(a){a[0]*=10;}
...
Var listx = new Array(1);
Listx[0] = x;
By10[listx);
X = list[0];

Alternative, function returns the new value.
The sort method



Sort method coerces elements to strings and puts
them in alph order.
To sort something other than strings to alpha ord,
write a function that performs the comparison and
send it to the sort method.
The comparison must return a negative number if
the two numbers are in order, zero if they are
equal, positive number if they are not.
Function num_order(a, b) {return a-b;}
num_list.sort(num_order);

function median( list){

list.sort(function(a,b){return a-b;});

var list_len = list.length;

if (( list_len %2 == 1 )





return list[Math.floor(list_len / 2)];
else
return Math.round( (list[list_len /2 -1]+
list[list_len /2 ] ) / 2 );
} // End of function median.
http://www.ens.utulsa.edu/~class_diaz/cs2043/medians.html
Constructors


Methods that create and initialize properties of
newly created objects
Constructors are called by the new operator
which precedes them in the new expression
var array = new Array(100);

Constructor reterences the object with this, a
predefined reference variable used to construct
and initialize the properties of the object.
Constructors

Example
function car(new_make, new_model, new_year){
this.make = new_make;
this.model = new_model;
this.year = new_year;
}
my_car = new car("Volvo", "S90", "2002");
Constructors

Methods for the objects are initialized just as if it
were a data property:
function diplay_car(){
document.write("Car make: ", this.make, "<br />");
document.write("Car model: ", this.model, "<br />");
document.write("Car year: ", this.year, "<br />"); }

Add to the constructor: this.display = display_car;

Now call method: my_car.display();
Pattern Matching
Regular Expressions



Pattern matching based on the RegExp object are
not covered in this class.
Pattern matching based on methods of the String
object are covered.
Methacharacters have special meaning in some
contexts in patterns:
\ | ( ) [ ] { } ^ $ * + ? .

Normal characters are not methacharacters.
Pattern Matching

search(pattern)
 Returns
position in the string object where the pattern
matched
var str = "Hurricane";
var position = str.search(/can/);
/* postion is now 5 */
 If
there is no match it returns-1
 The
period matches any character except new line.
/snow./ matches "snowy", "snowd", etc.
Pattern Matching

Placing desired characters in brackets allows
class of characters
[abc] matches for 'a', 'b', or 'c'
[a-h] matches any lower case letter from 'a' to 'h'
[^aeiou] matches any consonant

Repeated character or character-class pattern
/xy{4}z/ matches for xyyyyz
Pattern Matching

Predefined Character Classes
A digit
\d [0-9]
\D
[^0-9]
Not a digit
\w
[A-Za-z_0-9]
An alphanumeric character
\W
[^A-Za-z_0-9] Not an alphanumeric
\s[ \r\t\n\f]
A whitespace character
\S[^ \r\t\n\f]
Not a whitespace character
\b matches boundary between \w and \W
\Bmatches a non-word boundary, opposite of \b
Pattern Matching

Symbolic quantifiers
* zero or more repetitions
+ one or more repetitions
? one or none repetitions
/x*y+z?/ any number of xs, one or more y, may be a z
/\d+\.\d*/
a string of one or more digits followed by a
decimal period and may be more digits.
Pattern Matching

Anchors
 Beginning
of string (^):
/^pearl/ matches patterns beginning with "pearl ..."
 Ending
of string ($):
/gold$/ matches patterns ending in " ... gold"
 Note
anchor characters only have such meaning in
these locations:
/A^is$/ matches for /A^is$/ only
Pattern Matching

Modifiers attached to pattters to change how they
are used:
/ab/i matches for either upper or lower case 'ab'
/sp/x allows for white space to appear in the pattern
Pattern Matching

replace (pattern, string)
 Replace
substrings in the string object that match
pattern.
Var str = "It rains mostly in the plains";
str.replace(/in/g, "nk");
/* str becomes "It ranks mostly nk the planks" */
$1, $2, $3 predifined variables set to "in"
g modifier makes replacement global, every match replaced.
Pattern Matching

match(pattern)
Returns array of results of pattern-maching operation


With the g modifier it returns an array of substrigs that
matched
Whithout the g modifier, first element of returned array has
the matched substring, the other elements have the values
of $1, ...
var str "my 3 kings beat your 2 aces";
var matches = str.match(/[ab]/g);
/* matches is set up to ["b", "a", "a"]
Pattern Matching

split(pattern) --splits object string into substrigs
based on a given pattern
var str = "gouda:brie:raclet";
var cheese = str.split(":");
/* cheese set to [gouda, brie, raclet] */
http://www.mcs.utulsa.edu/~class_diaz/cs2043/forms_check.html
Debugging JavaScript

IE6
 Select
Internet Options from the Tools menu
 Choose
the Advance tab
 Uncheck
the Disable script debugging box
 Check
the Display a notification about every script
error box
 Now
a window error causes a small window to be
opened with an explanation of the error
Debugging JavaScript

NS6
 Select
Tasks, Tools, and JavaScript Console
 A small
 To
window appears to display script erros
avoid confusion, clear the console after using an
error message.