SlideShare uma empresa Scribd logo
1 de 56
Girish Srivastava
girish092.ch@gmail.com
1

10/15/2013
OOPs Concept
 Object-oriented programming (OOP) is a programming

language model organized around "objects" rather than
"actions" and data rather than logic.
 The concepts and rules used in object-oriented
programming provide these important benefits:
 The concept of a data class makes it possible to define subclasses

2

of data objects that share some or all of the main class
characteristics. Called inheritance.
 Since a class defines only the data it needs to be concerned with,
when an instance of that class (an object) is run, the code will not be
able to accidentally access other program data. This characteristic
of data hiding provides greater system security and avoids
unintended data corruption.
 The definition of a class is reuseable not only by the program for
which it is initially created but also by other object-oriented
programs.
10/15/2013
 The concept of data classes allows a programmer to create any new
Object-Oriented Programming
Concepts
 Objects collect related data items in a single place and







3

make it simpler, or at least more logical, to access those
items.
JScript refers to the items collected within an object as
its properties.
JScript objects not only store data, they also store
functions.
The relationship between an object and an instance of
an object is the same as the relationship between a
data type and a variable of that data type.
In a typeless language such as JScript, this distinction
is blurred but is still present.
10/15/2013
Introduction to Classes
 To create a class, use the class keyword followed by a

name for the object.
 The name of a class follows the rules we have applied
so far for variable and function names.
 As a name that represents a group of items, a class has
a body that would be used to define the items that
compose it.
• class Book{
•
var Title : String;
•
var Author : String;
•
var Pages : int;
•
var CoverType : char;
• }
4

10/15/2013
The items that compose a class are called members of the
Declaring a Class
 Unlike regular data types, a variable of a class must be

explicitly allocated a memory space, big enough to
contain its data. This is done using the new operator.
Here is an example:
class Book
{
var Title : String;
var Author : String;
var Pages : int;
var CoverType : char;
}
var BrandNew : Book = new Book;
var BrandNew : Book;
BrandNew = new Book;

 You can also allocate memory when declaring the

variable, that is, on the same line.
5

10/15/2013
Class Variable Initialization
 initialize a class, you can access each member and assign it an

appropriate value.

6

class Book
{
var Title : String;
var Author : String;
var Pages : int;
var CoverType : char;
}
var BrandNew : Book;
BrandNew = new Book;
BrandNew.Title = "Webber Databases With JScript .NET";
BrandNew.Author = "Catherine Mamfourh";
BrandNew.Pages = 1225;
BrandNew.CoverType = 'H';
print("Book Characteristics");
print("Title: ", BrandNew.Title);
print("Author: ", BrandNew.Author);
print("Pages: ", BrandNew.Pages);
print("Cover: ", BrandNew.CoverType);
10/15/2013
Creating Member Functions
 To create a member function of a class, type the

function keyword followed by a name, the necessary
parentheses, and the curly brackets that delimit the
body of a function.

class FRectangle
{
var Length : double;
var Height : double;
function Perimeter()
{
}
}
7

10/15/2013
Example

8

class FRectangle
{
var Length : double;
var Height : double;
function Perimeter() : double
{
return (Length + Height) * 2;
}
function Area() : double
{
return Length * Height;
}
function ShowCharacteristics()
{
print("Rectangle Characteristics");
print("Length:
", Length);
print("Height:
", Height);
print("Perimeter: ", Perimeter());
print("Area:
", Area());
}
}
var Recto : FRectangle = new FRectangle;
Recto.Length = 24.55;
Recto.Height = 20.75;
Recto.ShowCharacteristics();

10/15/2013
Class-based Objects
 Since JScript is a class-based, object-oriented

programming language, it is possible to define classes
that can inherit from other classes.
 Defined classes can have methods, fields, properties,
and subclasses. Inheritance enables classes to build on
existing classes and override selected base-class
methods and properties.
 Creating Your Own Classes
 The class statement defines classes. By default, class
Visibility are publicly accessible, which means that any
Valid for
membersModifier
class, class member, interface,
code that can access the class can also access the
public
interface member, or enumerations
class member.
private

protected
9

class member
class member

internal

10/15/2013
class, class member, enumeration
Classes with Constructors
 You can define a constructor for a class. A constructor, which

is a method with the same name as the class, is run when a
class is created with the new operator. You may not specify
a return type for a constructor.

10

class myClass
{
const answer : int = 42; // Constant field.
var distance : double; // Variable field.
function sayHello() :String { // Method.
return "Hello";
} // This is the constructor.
function myClass(distance : double) {
this.distance = distance; } }
var c : myClass = new myClass(8.5);
print("The distance is " + c.distance);

10/15/2013
Advanced Class Creation
 When you define a JScript class, you can assign

properties, and the defined class can subsequently
inherit from other classes.
 Classes with Properties
 JScript uses function get and function set statements to

11

specify properties. You can specify either or both
accessors to create read-only, write-only, or read-write
properties, although write-only properties are rare and may
indicate a problem with the design of the class.
 The calling program accesses properties in the same way
that it accesses fields. The main difference is that the
getter and setter for the property are used to perform the
access, whereas fields are accessed directly.
 Properties are usually used to access private or protected
fields of the class.
10/15/2013
 In this example, properties are used to access a protected field. The field is protected

to help prevent outside code from changing its value while allowing derived classes to
access it.
class Person {
// The name of a person.
// It is protected so derived classes can access it.
protected var name : String; // Define a getter for the property.
function get Name() : String
{
return this.name;
} // Define a setter for the property which makes sure that
// a blank name is never stored in the name field.
function set Name(newName : String)
{
if (newName == "")
throw "You can't have a blank name!";
this.name = newName;
}
function sayHello()
{
return this.name + " says 'Hello!'"; } }
// Create an object and store the name Fred.
var fred : Person = new Person();
fred.Name = "Fred";
print(fred.sayHello());
12

10/15/2013
Inheritance from Classes
 The extends keyword is used when defining a class

that builds on another class.
 JScript can extend most common-language
specification (CLS)-compliant classes.
 A class defined using the extends keyword is called a
derived class, and the class that is extended is called
the base class.
class Student extends Person {
// Override a base-class method.
function sayHello()
{
return this.name + " is studying for finals."; } }
var mary : Person = new Student;
mary.Name = "Mary";
print(mary.sayHello());
13

10/15/2013
Example
class BaseCls
{
function get Z() : int { return 100 ;}
}
class DervCls extends BaseCls
{
hide function get Z() : String { return "*" ;}
}
class UseClasses
{
var BObj : BaseCls = new DervCls();
var DObj : DervCls = new DervCls();
function ShowZ()
{
print("Accessed through base class: " + BObj.Z);
print("Accessed through derived class: " + DObj.Z);
}
14

}

10/15/2013
Example of Method Overloading

15

var methodOverload = new MethodOverload();
methodOverload.Greetings();
methodOverload.Greetings("Mr. Brown");
methodOverload.Greetings(97, "Mr. Brown");
class MethodOverload
{
function Greetings()
{
print("Hello, and welcome!");
}
function Greetings(name : String)
{
print("Hello, " + name + "!");
}
function Greetings(ticket : int, name : String)
{
print("Hello, " + name + "! Your ticket number is " +
ticket + ".");
}
}

10/15/2013
Prototype-based Objects
 Since JScript is an object-oriented programming

language, it supports the definition of custom constructor
functions and inheritance.
 Constructor functions (also called constructors) provide
the ability to design and implement your own prototypebased objects.
 Inheritance allows prototype-based objects to share a
common set of properties and methods that can be
dynamically added or removed.
 Creating Your Own Objects with Constructor
Functions
 A powerful feature of JScript is the ability to define

16

constructor functions to create custom prototype-based
objects for use in your scripts.
 To create an instance of a prototype-based object, you first
10/15/2013
must define a constructor function. This process creates a
Constructors with Properties
 The following example defines a constructor function for

pasta objects. The this statement allows the constructor
to initialize the object.
•
•
•
•

// pasta is a constructor that takes four parameters.
function pasta(grain, width, shape, hasEgg) {
this.grain = grain; // What grain is it made of?
this.width = width; // How many centimeters wide is
it?
• this.shape = shape; // What is the cross-section?
• this.hasEgg = hasEgg; // Does it have egg yolk as a
binder?
• }

 After defining an object constructor, you create

17

instances of the object with the new operator. Here the
pasta constructor is used to create spaghetti and
linguine objects.
10/15/2013
 var spaghetti = new pasta("wheat", 0.2, "circle", true);
Advanced Object Creation
 JScript supports inheritance with custom prototype-

based objects. Through inheritance, prototype-based
objects can share a common set of properties and
methods that can be dynamically added or removed.
Moreover, individual objects can override the default
behavior.
 Creating a Prototype-based Object
 To create an instance of a prototype-based object, you first must

18

define a constructor function.
 Once this constructor is written, you can use properties of the
prototype object to create inherited properties and shared methods.
The constructor provides the instance-specific information to an
object, while the prototype object provides the object-specific
information and methods to the object.
 The this statement enables the method to access members of the
object.
10/15/2013
Cont…
// Define the constructor and add instance specific information.
function Circle (radius) {
this.r = radius; // The radius of the circle.
} // Add a property the Circle prototype.
Circle.prototype.pi = Math.PI;
function ACirclesArea () { // The formula for the area of a circle is
pi*r^2.
return this.pi * this.r * this.r;
} // Add a method the Circle prototype.
Circle.prototype.area = ACirclesArea; // This is how you would
invoke the area function on a Circle object.
var ACircle = new Circle(2);
var a = ACircle.area();
Using this principle, you can define additional properties for
existing constructor functions
19

10/15/2013
Jscript Object
 Intrinsic Objects
 JScript provides 16 intrinsic objects as part of the

language specification.
 Some of the commonly used objects are:
 JScript Array Object
 JScript Date Object
 JScript Math Object
 JScript Number Object
 JScript Object Object
 JScript String Object

20

10/15/2013
JScript Array Object
 An Array object is a variable that groups related pieces

of data.
 A unique number, called an index or
subscript, references each piece of data in the array. To
access the data stored in the array, the array identifier
and the index are combined with the index operator
"[]", for example, theMonths[0].
 Creating an Array
 To create a new array, use the new operator and the Array

21

constructor. In this example, the array constructor is used to
theMonths[6] = "Jul";
construct an array with length 12. Then, data is entered into the
theMonths[7] = "Aug";
array.
theMonths[8] = "Sep";
 var theMonths = new Array(12);
 theMonths[0] = "Jan"; theMonths[9] = "Oct";
 theMonths[1] = "Feb"; theMonths[10] = "Nov";
theMonths[11] = "Dec";
 theMonths[2] = "Mar";
 theMonths[3] = "Apr";
10/15/2013
 theMonths[4] = "May";
Cont…
 When you create an array using the Array keyword,

JScript includes a length property, which records the
number of entries.
 If you do not specify a number, the length is set to zero,
and the array has no entries.
 If you specify a number, the length is set to that
number. If you specify more than one parameter, the
parameters are used as entries in the array.
 In addition, the number of parameters is assigned to
the length property, as in the following example, which
is equivalent to the preceding example.
 var theMonths = new Array("Jan", "Feb", "Mar", "Apr",

"May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
22

10/15/2013
Cont…
 Using Expando Properties of Arrays
 Array objects, just as any other object based on the JScript Object

object, support expando properties.
 Expando properties are new properties that you dynamically add
and delete from an array, like array indices.
 In addition, adding or deleting expando properties does not change
the length property.
 For Example:
• // Initialize an array with three elements.
• var myArray = new Array("Hello", 42, new Date(2000,1,1));
print(myArray.length); // Prints 3.
• // Add some expando properties. They will not change the
length. myArray.expando = "JScript";
• myArray["another Expando"] = "Windows";
• print(myArray.length); // Still prints 3.
23

Typed Arrays
var theMonths : String[] = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug
10/15/2013
"Sep", "Oct", "Nov", "Dec"];
Using Typed Arrays
 A data type that is followed by a set of square brackets

defines a one-dimensional typed array. To define an ndimensional array, the base data type is followed by a
set of square brackets with n-1 commas between the
brackets.
 The following shows some simple array declarations:
 // Simple array of strings; initially empty. The variable 'names' itself
 // will be null until something is assigned to it
 var names : String[];
 // Create an array of 50 objects; the variable 'things' won't be null,
 // but each element of the array will be until they are assigned

24

values.
 var things : Object[] = new Object[50]; // Put the current date and
time in
10/15/2013
element 42.
Cont…
 // An array of arrays of integers; initially it is null.
 var matrix : int[][]; // Initialize the array of arrays.
 matrix = new (int[])[5]; // Initialize each array in the array of arrays.
 for(var i = 0; i<5; i++)
 matrix[i] = new int[5]; // Put some values into the matrix.
 matrix[2][3] = 6;
 matrix[2][4] = 7;
 // A three-dimensional array var multidim :

 double[,,] = new double[5,4,3]; // Put some values into the matrix.

multidim[1,3,0] = Math.PI*5.;

 For More details:
 http://msdn.microsoft.com/en-us/library/9f2a8x5w(v=vs.80).aspx
25

10/15/2013
JScript Date Object
 The JScript Date object can be used to represent







26

arbitrary dates and times, to get the current system
date, and to calculate differences between dates.
It has several predefined properties and methods.
The Date object stores a day of the week; a month, day,
and year; and a time in hours, minutes, seconds, and
milliseconds.
This information is based on the number of milliseconds
since January 1, 1970, 00:00:00.000 Coordinated
Universal Time (UTC), formerly known as Greenwich
Mean Time.
JScript can handle dates that are in the approximate
range from 250,000 B.C. to 255,000 A.D., although
10/15/2013
some formatting functionality is supported only for dates
Creating a Date Object
 To create a new Date object, use the new operator.
var s : String = "Today's date is: "; // Declare variables.
var d : Date = new Date();
// Create Date object with today's
date.
s += (d.getMonth() + 1) + "/";
// Get month
s += d.getDate() + "/";
// Get day
s += d.getYear();
// Get year.
print(s);
// Print date.

There are many more predefined method are present, please check
from following url:
http://msdn.microsoft.com/en-us/library/xby9ffhf(v=vs.80).aspx

27

10/15/2013
JScript Math Object
 The Math object has a number of intrinsic properties

and methods. The properties are specific numbers.
 Using the Math Object
 One of these specific numbers is the value of pi (approximately

3.14159...). This is the value of the Math.PI property, which is used
in the following example.
 // A radius variable is declared and assigned a numeric value.
 var radius = 4;
 var area = Math.PI * radius * radius;
 // Note capitalization of Math and PI.
 One built-in method of the Math object is the exponentiation method, or
pow, which raises a number to a specified power. The following
example uses both pi and exponentiation.
 // This formula calculates the volume of a sphere with the given radius.
 var volume = (4/3)*(Math.PI*Math.pow(radius,3));
28

10/15/2013
JScript Number Object
 The primary purpose of the Number object is to collect

properties and methods that are used for the default
numeric data type, the Number data type.
 The numeric constants provided by the properties of the
Number object are listed in the table below.
Property

Description

MAX_VALUE

Largest possible number, about 1.79E+308; can be
positive or negative. (Value varies slightly from system
to system.)

MIN_VALUE

Smallest possible number, about 2.22E-308; can be
positive or negative. (Value varies slightly from system
to system.)

NaN

Special nonnumeric value, "not a number."

POSITIVE_INFINITY

Any positive value larger than the largest positive
number (Number.MAX_VALUE) is automatically
converted to this value; represented as infinity.

29

NEGATIVE_INFINITY

10/15/2013
Any value more negative than the largest negative
number (-Number.MAX_VALUE) is automatically
Cont…
 Number.NaN is a special property that is defined as







30

not a number.
Number.NaN is returned when an expression that
cannot be represented as a number is used in a
numeric context.
For example, NaN is returned when either the string
"Hello" or 0/0 (zero divided by zero) is used as a
number.
NaN compares as unequal to any number and to itself.
To test for a NaN result, do not compare against
Number.NaN; use the isNaN method of the Global
object instead.
10/15/2013
JScript Object Object
 All objects in JScript based on the Object object support

expando properties, or properties that can be added and
removed while the program is running.
 Using the Object Object
 These properties can have any name, including numbers. A name of a

property that is a simple identifier can be written after a period that
follows the object name, such as:
• var myObj = new Object();
• // Add two expando properties, 'name' and 'age'
• myObj.name = "Fred";
• myObj.age = 53;
 You can also access an object's properties using the index operator, [].
 This is required if the name of the property is not a simple identifier, or if
the name of the property is not known when you write the script.

31

• var myObj = new Object();
• // This identifier contains spaces.
• myObj["not a simple identifier"] = "This is the property
value";
10/15/2013
• // This identifier is a number.
• myObj[100] = "100";
Cont…
 Although the index operator is more commonly associated

with accessing array elements, the index is always the
property name expressed as a string literal when used with
objects.
 Array objects have a special length property that changes
when new elements are added; in general, objects do not
have a length propertyname iswhen the indexthat the property
The property even treated Meaning operator is used
Operator
as
name
to add properties.
Period (.)
An identifier
Cannot be manipulated as
 Notice the important difference between the two ways of data
accessing object properties.
Index ([])
A string literal
Can be manipulated as data

 This difference becomes useful when you do not know the

32

property names until runtime (for example, when you are
constructing objects based on user input). To extract 10/15/2013
all the
properties from an associative array, you must use the for ...
JScript String Object
 A String object in JScript represents textual data such as

words and sentences.
 String objects are rarely created explicitly with the new
operator because they are usually created implicitly by
assigning a string literal to a variable.
 Using the String Object
 The String object has many built-in methods. One of these is the

substring method, which returns part of the string.
 It takes two numbers as its arguments. The first number is the zerobased index that indicates the beginning of the substring, and the
second number indicates the end of the substring.
• var aString : String = "0123456789";
• var aChunk : String = aString.substring(4, 7); // Sets
aChunk to "456".
 The String object also has a length property. This property contains the
number of characters in the string (0 for an empty string). This a numeric
value and can be used directly in calculations. This example obtains the
10/15/2013
33 length of a string literal.


var howLong : int = "Hello World".length // Sets the howLong variable to
Examples
o
o
o
o
o

var primStr : Object = "This is a string";
print(primStr.length); // Read the length property.
print(primStr.toUpperCase()); // Call a method.
primStr.myProperty = 42; // Set a new property.
print(primStr.myProperty); // Try to read it back.

For String objects created with the new statement, custom
properties can be set:
var newStr : Object = new String("This is also a string");
print(newStr.length); // Read the length property.
print(newStr.toUpperCase()); // Call a method.
newStr.myProperty = 42; // Set a new property.
print(newStr.myProperty); // Try to read it back.
34

10/15/2013
arguments Object
 An object representing the currently executing function,






35

its arguments, and the function that called it. This object
cannot be constructed explicitly.
The arguments object has no methods.
An arguments object is instantiated for each function
when it begins execution.
The arguments object is directly accessible only within
the scope of its associated function.
All parameters passed to a function and the number of
parameters are stored in the arguments object. The
arguments object is not an array, but the individual
arguments are accessed using [ ] notation, the same
way array elements are accessed.
10/15/2013
Example

36

function argTest(a, b) : String {
var i : int;
var arguments;
var s : String = "The argTest function expected ";
var numargs : int = arguments.length; // Get number of arguments passed.
var expargs : int = argTest.length; // Get number of arguments expected.
if (expargs < 2)
The arguments object is not
s += expargs + " argument. ";
available when running in fast
else
mode, the default for JScript. To
s += expargs + " arguments. ";
compile a program from the
if (numargs < 2)
command line that uses
s += numargs + " was passed.";
the arguments object, you must
else
turn off the fast option by
s += numargs + " were passed.";
using /fast-. It is not safe to turn off
s += "n"
The output:
for (i =0 ; i < numargs; i++){
// Get argument the fast option in ASP.NET because
contents.
The argTest function expected 2
s += " Arg " + i + " = " + arguments[i] + "n"; of threading issues.
arguments. 1 was passed. Arg 0
}
=
return(s);
// Return list of arguments. 42 The argTest function
expected 2 arguments. 3 were
}
passed. Arg 0 = Tue Sep 7
print(argTest(42));
print(argTest(new Date(1999,8,7),"Sam",Math.PI)); 00:00:00 PDT 1999 10/15/2013

Arg 1 = Sam
Boolean Object
 The Boolean object references a Boolean value.


function Boolean( [boolValue : boolean] )

 “boolValue” is Optional. The initial Boolean value for the

new object. If boolValue is omitted, or is false, 0, null,
NaN, or an empty string, the initial value of the Boolean
object is false. Otherwise, the initial value is true.
 The Boolean object is a wrapper for Boolean data. The
primary purposes for the Boolean object are to collect its
properties into one object and to allow Boolean values to
be converted into strings via the toString method. The
Boolean object is similar to the boolean data type.

37

10/15/2013
Enumerator Object
 Enables enumeration of items in a collection.
 varName = new Enumerator([collection])
 “varName” is Required. The variable name to which the enumerator is

assigned.
 “Collection” is Optional. Any object that implements the IEnumerable
interface, such as an array or collection.

 Every collection is automatically enumerable in JScript.

Consequently, you do not need to use the Enumerator
object to access members of a collection. You can access
any member directly using the for...in statement. The
Enumerator object is provided for backwards compatibility.
 The Enumerator object, which provides a way to access
any member of a collection, behaves in a manner similar to
the For...Each statement in VBScript.
 You can create a collection in JScript by defining a class that
10/15/2013
38 implements IEnumerable. Collections can also be created
Example
 The following code uses the Enumerator object to print

the letters of the available drives and their names (if
available):

39

// Declare variables.
var n, x;
var fso : ActiveXObject = new
ActiveXObject("Scripting.FileSystemObject");
// Create Enumerator on Drives.
var e : Enumerator = new Enumerator(fso.Drives);
for (;!e.atEnd();e.moveNext())
{ // Loop over the drives collection.
x = e.item();
if (x.DriveType == 3)
// See if network drive.
n = x.ShareName;
// Get share name
else if (x.IsReady)
// See if drive is ready.
n = x.VolumeName;
// Get volume name.
10/15/2013
else n = "[Drive not ready]";
ActiveXObject Object
 An object that provides an interface to an Automation object.
function ActiveXObject(ProgID : String [, location : String])
 “ProgID” Required. A string of the form "serverName.typeName",
where serverName is the name of the application providing the
object, and typeName is the name of the type or class of the object to
create.
 “Location” Optional. The name of the network server where the object
is to be created.


 Typically, an automation server provides at least one type of

object. For example, a word-processing application may
provide an application object, a document object, and a
toolbar object.
 The following code starts an application (in this case, a
Microsoft Excel worksheet) by calling the ActiveXObject
object constructor. The ActiveXObject allows you to refer to
the application in your code. Using the following example,
10/15/2013
40 you can access properties and methods of the new object
Example
// Declare the variables
var Excel, Book;
// Create the Excel application object.
Excel = new ActiveXObject("Excel.Application");
// Make Excel visible.
Excel.Visible = true;
// Create a new work book.
Book = Excel.Workbooks.Add()
// Place some text in the first cell of the sheet.
Book.ActiveSheet.Cells(1,1).Value = "This is column A, row 1";
// Save the sheet.
Book.SaveAs("C:TEST.XLS");
// Close Excel with the Quit method on the Application object.
Excel.Application.Quit();
http://msdn.microsoft.com/en-us/library/6958xykx.aspx
41

10/15/2013
Error Object
 Contains information about errors. There are two forms of the

Error constructor.
o function Error([description : String ])
o function Error([number : Number [, description : String ]])
o “number” Optional. Numeric value assigned to the error, specifying
the value of the number property. Zero if omitted.
o “description” Optional. Brief string that describes the error,
specifying the initial value of the description and message
properties. Empty string if omitted.

 Error objects can be explicitly created using the constructor

shown above. You can add properties to the Error object to
expand its capabilities. An Error object is also created
whenever a run-time error occurs to describe the error.
 Typically, an Error object is thrown with the throw statement
and the expectation that it will be caught by a try...catch
statement. You can use a throw statement to pass any type of
data as an error; the throw statement will not implicitly create
an Error object. However, by throwing an Error object, a
catch block can treat JScript run-time errors and user-defined
errors similarly.
10/15/2013
42
Example

43

try
{
print("Outer try is example
 The following running"); illustrates a use of the
try
try
{
{
print("Nested try is running");
// Throw an error.
throw new Error(301, "an error");
}catch(e)
throw new Error(42,"No question");
{
} catch(e)
print("Nested catch caught " + e.message);
{
throw e;
print(e)
}
// Extract the error code from the error number.
finally
print(e.number & 0xFFFF)
{
print("Nested finally is running");
print(e.description)
} }
}
catch(e)
{
print("Outer catch caught " + e.message);
}
finally
{
print("Outer finally is running");
}

Error object.

10/15/2013
Global Object
 An intrinsic object whose purpose is to collect global methods

into one object.
 The Global object has no syntax. You call its methods
directly.
 The Global object is never used directly and cannot be
created using the new operator. It is created when the
scripting engine is initialized, thus making its methods and
properties available immediately.
 Some of the methods are:

44

o escape Method (Returns an encoded String object that can be
read on all computers.)
o eval Method (Evaluates JScript code and executes it. )
o isFinite Method (Returns a Boolean value that indicates if a
supplied number is finite.)
o isNaN Method (Returns a Boolean value that indicates whether a
value is the reserved value NaN (not a number). )
o parseFloat Method (Returns a floating-point number converted
from a string. )
10/15/2013
o parseInt Method (Returns an integer converted from a string.)
RegExp Object
 An intrinsic global object that stores information about the results

of regular expression pattern matches. This object cannot be
constructed explicitly.
 An object that contains a regular expression pattern along with
flags that identify how to apply the pattern.
 Syntax 1


re = /pattern/[flags]

 Syntax 2


45

re = new RegExp("pattern",["flags"])
o re
Required. The variable name to which the regular expression pattern is
assigned.
o pattern
Required. The regular expression pattern to use. If you use Syntax
1, delimit the pattern by "/“ characters. If you use Syntax 2, enclose the
pattern in quotation marks.
o flags
Optional. Enclose flag in quotation marks if you use Syntax 2.
Available flags, which may be combined, are:
10/15/2013
o · g (global search for all occurrences of pattern)
o · i (ignore case)
Example:
var s : String = "The rain in Spain falls mainly in the
plain";
// Create regular expression object using Syntax 1.
var re1 : RegExp = new RegExp("Spain","i");
// Create regular expression object using Syntax 2.
var re2 : RegExp = /IN/i;
// Find a match within string s.
print(s.match(re1));
print(s.match(re2));

46

10/15/2013
Regular Expression Syntax
A regular expression is a pattern of text that consists of
ordinary characters (for example, letters a through z) and
special characters, known as metacharacters. The pattern
describes one or more strings to match when searching text.
Expression

Matches

/^s*$/

Match a blank line.

/d{2}-d{5}/

Validate an ID number consisting of 2
digits, a hyphen, and an additional 5 digits.

/<s*(S+)(s[^>]*)?>[sS]*<s*/1s*>/

Match an HTML tag.

47

http://msdn.microsoft.com/enus/library/ae5bf541(v=vs.80).aspx

10/15/2013
Regular Expression Programming
 You can use regular expressions in JScript to search for

patterns in a string, replace text, and extract substrings.
 Searching

48

Exec method
var src = "The quick brown fox jumps over
the lazy dog.";
// Create regular expression pattern with a
global flag.
var re = /w+/g; // Get the next word, starting
at the position of lastindex.
var arr;
while ((arr = re.exec(src)) != null) {
print (arr.index + "-" + arr.lastIndex + " " +
10/15/2013
arr[0]);
Explanation
 The previous JScript example finds all occurrences of a







49

word.
The statement that creates the regular expression is
var re = /w+/g;
The /w+/ pattern specifies to match one or more of any
of the following characters: A-Z, a-z, 0-9, and the
underscore character. The g (global) flag that follows
the pattern specifies that the search should find all
occurrences of the pattern instead of just the first
occurrence.
You can also use the following alternative JScript
syntax.
var re = new RegExp("w+", "g");

 To retrieve each match, the exec Method keeps

10/15/2013
Data
 The way that JScript copies, passes, and compares

data depends on how the data is stored, which in turn
depends on the type of the data.
 JScript stores data either by value or by reference.
 By Value vs. By Reference
 JScript copies, passes, and compares numbers and Boolean values

(true and false) by value.
 This process allocates a space in computer memory and copies the
value of the original into it.
 Changes to the original do not affect the copy (and vice versa)
because the two are separate entities. Two numbers or Boolean
values are considered equal if they have the same value.

50

10/15/2013
Cont…
 JScript copies, passes, and compares objects, arrays, and

functions by reference.
 This process essentially creates a reference to the original item and
uses the reference as if it were a copy.
 Changes in any one, change both the original and the copy (and
vice versa). There is really only one entity; the copy is just another
reference to the data.

 Function Parameters
 When JScript passes a parameter to a function by value,

it makes a separate copy of that parameter that exists
only inside the function.
 Even though objects and arrays are passed by reference,
if a new value in the function directly overwrites them, the
new value is not reflected outside the function.
 Only changes to properties of objects, or elements of
arrays, are visible outside the function.
51

10/15/2013
Example
• function clobber(param) {
• // Overwrite the parameter; this will not be seen in the calling
code
• param = new Object();
• param.message = "This will not work.";
• }
• function update(param) {
•
// Modify the property of the object; this will be seen in the
calling code.
•
param.message = "I was changed.";
• }
• // Create an object, and give it a property.
• var obj = new Object();
• obj.message = "This is the original.";
• // Call clobber, and print obj.message.
• clobber(obj);
• print(obj.message);
• // Call update, and print obj.message.
• update(obj);
• print(obj.message);
52

10/15/2013

• The first function overwrites the input parameter, which prevents further
the changes to the parameter from affecting the original input argument.
Conditional Compilation
 Conditional compilation enables JScript to use new

language features without sacrificing compatibility with
older versions that do not support the features. Some
typical uses for conditional compilation include using
new features in JScript, embedding debugging support
into a script, and tracing code execution.
 http://msdn.microsoft.com/enUS/library/ahx1z4fs(v=vs.80).aspx

53

10/15/2013
Debugging in server side
 The Microsoft Script Debugger is a powerful debugging







54

tool that can help you quickly locate bugs and
interactively test your server-side scripts. You can do
the following things using the features of Microsoft
Script Debugger:
Run your server-side scripts one line at a time.
Open a command window to monitor the value of
variables, properties, or array elements, during the
execution of your server-side scripts.
Set pauses to suspend execution of your server-side
scripts (using either the debugger or a script
command) at a particular line of script.
Trace procedures while running your server-side script.
10/15/2013
Debugging
 To add breakpoints to your server-side scripts written in

JScript, insert a debugger statement before a suspect
line of script. For example, the following script includes
adebugger statement that interrupts execution and
automatically starts Script Debugger each time the
script loops through a new value.
o
o
o
o
o

<%@ Language= "JScript" %>
<% for (var count = 1; count <= 10; count++)
{
var eventest = count%2
//Set breakpoint so that user can step through execution of
script.
o debugger
o if (eventest == 0)
o Response.Write("Even value is " + count + "<br>") } %>
10/15/2013

55

o http://msdn.microsoft.com/en-
 Resources:
 http://msdn.microsoft.com/en-

US/library/9kzd4syw(v=vs.80).aspx
 http://msdn.microsoft.com/enUS/library/bsz6d1zs(v=vs.80).aspx

56

10/15/2013

Mais conteúdo relacionado

Mais procurados

Defining classes-part-i-constructors-properties
Defining classes-part-i-constructors-propertiesDefining classes-part-i-constructors-properties
Defining classes-part-i-constructors-propertiesCtOlaf
 
Devoxx08 - Nuxeo Core, JCR 2, CMIS
Devoxx08 - Nuxeo Core, JCR 2, CMIS Devoxx08 - Nuxeo Core, JCR 2, CMIS
Devoxx08 - Nuxeo Core, JCR 2, CMIS Nuxeo
 
openFrameworks freakDay S03E02 Diederick Huijbers - C++/Physics/Cloth Animati...
openFrameworks freakDay S03E02 Diederick Huijbers - C++/Physics/Cloth Animati...openFrameworks freakDay S03E02 Diederick Huijbers - C++/Physics/Cloth Animati...
openFrameworks freakDay S03E02 Diederick Huijbers - C++/Physics/Cloth Animati...roxlu
 
Object Oriented Programming in Python
Object Oriented Programming in PythonObject Oriented Programming in Python
Object Oriented Programming in PythonSujith Kumar
 
Basics of Object Oriented Programming in Python
Basics of Object Oriented Programming in PythonBasics of Object Oriented Programming in Python
Basics of Object Oriented Programming in PythonSujith Kumar
 
Doctrator Symfony Live 2011 San Francisco
Doctrator Symfony Live 2011 San FranciscoDoctrator Symfony Live 2011 San Francisco
Doctrator Symfony Live 2011 San Franciscopablodip
 
object oriented programming language by c++
object oriented programming language by c++object oriented programming language by c++
object oriented programming language by c++Mohamad Al_hsan
 
PHP - Introduction to Object Oriented Programming with PHP
PHP -  Introduction to  Object Oriented Programming with PHPPHP -  Introduction to  Object Oriented Programming with PHP
PHP - Introduction to Object Oriented Programming with PHPVibrant Technologies & Computers
 
Python – Object Oriented Programming
Python – Object Oriented Programming Python – Object Oriented Programming
Python – Object Oriented Programming Raghunath A
 
Object oriented approach in python programming
Object oriented approach in python programmingObject oriented approach in python programming
Object oriented approach in python programmingSrinivas Narasegouda
 
09 Object Oriented Programming in PHP #burningkeyboards
09 Object Oriented Programming in PHP #burningkeyboards09 Object Oriented Programming in PHP #burningkeyboards
09 Object Oriented Programming in PHP #burningkeyboardsDenis Ristic
 

Mais procurados (20)

Object oriented programming in python
Object oriented programming in pythonObject oriented programming in python
Object oriented programming in python
 
Defining classes-part-i-constructors-properties
Defining classes-part-i-constructors-propertiesDefining classes-part-i-constructors-properties
Defining classes-part-i-constructors-properties
 
Devoxx08 - Nuxeo Core, JCR 2, CMIS
Devoxx08 - Nuxeo Core, JCR 2, CMIS Devoxx08 - Nuxeo Core, JCR 2, CMIS
Devoxx08 - Nuxeo Core, JCR 2, CMIS
 
OOP C++
OOP C++OOP C++
OOP C++
 
openFrameworks freakDay S03E02 Diederick Huijbers - C++/Physics/Cloth Animati...
openFrameworks freakDay S03E02 Diederick Huijbers - C++/Physics/Cloth Animati...openFrameworks freakDay S03E02 Diederick Huijbers - C++/Physics/Cloth Animati...
openFrameworks freakDay S03E02 Diederick Huijbers - C++/Physics/Cloth Animati...
 
Object Oriented Programming in Python
Object Oriented Programming in PythonObject Oriented Programming in Python
Object Oriented Programming in Python
 
201005 accelerometer and core Location
201005 accelerometer and core Location201005 accelerometer and core Location
201005 accelerometer and core Location
 
Python oop third class
Python oop   third classPython oop   third class
Python oop third class
 
Basics of Object Oriented Programming in Python
Basics of Object Oriented Programming in PythonBasics of Object Oriented Programming in Python
Basics of Object Oriented Programming in Python
 
Oop concepts in python
Oop concepts in pythonOop concepts in python
Oop concepts in python
 
Doctrator Symfony Live 2011 San Francisco
Doctrator Symfony Live 2011 San FranciscoDoctrator Symfony Live 2011 San Francisco
Doctrator Symfony Live 2011 San Francisco
 
OO in JavaScript
OO in JavaScriptOO in JavaScript
OO in JavaScript
 
Mca 504 dotnet_unit3
Mca 504 dotnet_unit3Mca 504 dotnet_unit3
Mca 504 dotnet_unit3
 
object oriented programming language by c++
object oriented programming language by c++object oriented programming language by c++
object oriented programming language by c++
 
Oops concept in php
Oops concept in phpOops concept in php
Oops concept in php
 
java classes
java classesjava classes
java classes
 
PHP - Introduction to Object Oriented Programming with PHP
PHP -  Introduction to  Object Oriented Programming with PHPPHP -  Introduction to  Object Oriented Programming with PHP
PHP - Introduction to Object Oriented Programming with PHP
 
Python – Object Oriented Programming
Python – Object Oriented Programming Python – Object Oriented Programming
Python – Object Oriented Programming
 
Object oriented approach in python programming
Object oriented approach in python programmingObject oriented approach in python programming
Object oriented approach in python programming
 
09 Object Oriented Programming in PHP #burningkeyboards
09 Object Oriented Programming in PHP #burningkeyboards09 Object Oriented Programming in PHP #burningkeyboards
09 Object Oriented Programming in PHP #burningkeyboards
 

Semelhante a Jscript part2

Synapseindia object oriented programming in php
Synapseindia object oriented programming in phpSynapseindia object oriented programming in php
Synapseindia object oriented programming in phpSynapseindiappsdevelopment
 
Wordpress (class,property,visibility,const,destr,inheritence,mysql etc)
Wordpress (class,property,visibility,const,destr,inheritence,mysql etc)Wordpress (class,property,visibility,const,destr,inheritence,mysql etc)
Wordpress (class,property,visibility,const,destr,inheritence,mysql etc)Rathod Shukar
 
DeclaringConstructir.pptx
DeclaringConstructir.pptxDeclaringConstructir.pptx
DeclaringConstructir.pptxSinbadMagi
 
Question and answer Programming
Question and answer ProgrammingQuestion and answer Programming
Question and answer ProgrammingInocentshuja Ahmad
 
Object Oriented Programming using JAVA Notes
Object Oriented Programming using JAVA Notes Object Oriented Programming using JAVA Notes
Object Oriented Programming using JAVA Notes Uzair Salman
 
Is2215 lecture2 student(2)
Is2215 lecture2 student(2)Is2215 lecture2 student(2)
Is2215 lecture2 student(2)dannygriff1
 
Oop features java presentationshow
Oop features java presentationshowOop features java presentationshow
Oop features java presentationshowilias ahmed
 
Classes, objects and methods
Classes, objects and methodsClasses, objects and methods
Classes, objects and methodsfarhan amjad
 
Computer programming(C++): Structures
Computer programming(C++): StructuresComputer programming(C++): Structures
Computer programming(C++): StructuresJishnuNath7
 
Classes and Objects in C#
Classes and Objects in C#Classes and Objects in C#
Classes and Objects in C#Adeel Rasheed
 

Semelhante a Jscript part2 (20)

concept of oops
concept of oopsconcept of oops
concept of oops
 
python.pptx
python.pptxpython.pptx
python.pptx
 
Synapseindia object oriented programming in php
Synapseindia object oriented programming in phpSynapseindia object oriented programming in php
Synapseindia object oriented programming in php
 
Wordpress (class,property,visibility,const,destr,inheritence,mysql etc)
Wordpress (class,property,visibility,const,destr,inheritence,mysql etc)Wordpress (class,property,visibility,const,destr,inheritence,mysql etc)
Wordpress (class,property,visibility,const,destr,inheritence,mysql etc)
 
DeclaringConstructir.pptx
DeclaringConstructir.pptxDeclaringConstructir.pptx
DeclaringConstructir.pptx
 
lecture3.pptx
lecture3.pptxlecture3.pptx
lecture3.pptx
 
Question and answer Programming
Question and answer ProgrammingQuestion and answer Programming
Question and answer Programming
 
Object Oriented Programming using JAVA Notes
Object Oriented Programming using JAVA Notes Object Oriented Programming using JAVA Notes
Object Oriented Programming using JAVA Notes
 
Is2215 lecture2 student(2)
Is2215 lecture2 student(2)Is2215 lecture2 student(2)
Is2215 lecture2 student(2)
 
Only oop
Only oopOnly oop
Only oop
 
Lab 4 (1).pdf
Lab 4 (1).pdfLab 4 (1).pdf
Lab 4 (1).pdf
 
Oops
OopsOops
Oops
 
Oop features java presentationshow
Oop features java presentationshowOop features java presentationshow
Oop features java presentationshow
 
My c++
My c++My c++
My c++
 
Oops
OopsOops
Oops
 
Classes, objects and methods
Classes, objects and methodsClasses, objects and methods
Classes, objects and methods
 
Php oop (1)
Php oop (1)Php oop (1)
Php oop (1)
 
Computer programming(C++): Structures
Computer programming(C++): StructuresComputer programming(C++): Structures
Computer programming(C++): Structures
 
Classes and Objects in C#
Classes and Objects in C#Classes and Objects in C#
Classes and Objects in C#
 
Opp concept in c++
Opp concept in c++Opp concept in c++
Opp concept in c++
 

Mais de Girish Srivastava (9)

My tableau
My tableauMy tableau
My tableau
 
IBM Pure Data System for Analytics (Netezza)
IBM Pure Data System for Analytics (Netezza)IBM Pure Data System for Analytics (Netezza)
IBM Pure Data System for Analytics (Netezza)
 
Jquery
JqueryJquery
Jquery
 
Extjs
ExtjsExtjs
Extjs
 
Jive
JiveJive
Jive
 
Jscript part1
Jscript part1Jscript part1
Jscript part1
 
Cgi
CgiCgi
Cgi
 
Complete Dojo
Complete DojoComplete Dojo
Complete Dojo
 
Dojo tutorial
Dojo tutorialDojo tutorial
Dojo tutorial
 

Último

Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024The Digital Insurer
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 

Último (20)

Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024My INSURER PTE LTD - Insurtech Innovation Award 2024
My INSURER PTE LTD - Insurtech Innovation Award 2024
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 

Jscript part2

  • 2. OOPs Concept  Object-oriented programming (OOP) is a programming language model organized around "objects" rather than "actions" and data rather than logic.  The concepts and rules used in object-oriented programming provide these important benefits:  The concept of a data class makes it possible to define subclasses 2 of data objects that share some or all of the main class characteristics. Called inheritance.  Since a class defines only the data it needs to be concerned with, when an instance of that class (an object) is run, the code will not be able to accidentally access other program data. This characteristic of data hiding provides greater system security and avoids unintended data corruption.  The definition of a class is reuseable not only by the program for which it is initially created but also by other object-oriented programs. 10/15/2013  The concept of data classes allows a programmer to create any new
  • 3. Object-Oriented Programming Concepts  Objects collect related data items in a single place and     3 make it simpler, or at least more logical, to access those items. JScript refers to the items collected within an object as its properties. JScript objects not only store data, they also store functions. The relationship between an object and an instance of an object is the same as the relationship between a data type and a variable of that data type. In a typeless language such as JScript, this distinction is blurred but is still present. 10/15/2013
  • 4. Introduction to Classes  To create a class, use the class keyword followed by a name for the object.  The name of a class follows the rules we have applied so far for variable and function names.  As a name that represents a group of items, a class has a body that would be used to define the items that compose it. • class Book{ • var Title : String; • var Author : String; • var Pages : int; • var CoverType : char; • } 4 10/15/2013 The items that compose a class are called members of the
  • 5. Declaring a Class  Unlike regular data types, a variable of a class must be explicitly allocated a memory space, big enough to contain its data. This is done using the new operator. Here is an example: class Book { var Title : String; var Author : String; var Pages : int; var CoverType : char; } var BrandNew : Book = new Book; var BrandNew : Book; BrandNew = new Book;  You can also allocate memory when declaring the variable, that is, on the same line. 5 10/15/2013
  • 6. Class Variable Initialization  initialize a class, you can access each member and assign it an appropriate value. 6 class Book { var Title : String; var Author : String; var Pages : int; var CoverType : char; } var BrandNew : Book; BrandNew = new Book; BrandNew.Title = "Webber Databases With JScript .NET"; BrandNew.Author = "Catherine Mamfourh"; BrandNew.Pages = 1225; BrandNew.CoverType = 'H'; print("Book Characteristics"); print("Title: ", BrandNew.Title); print("Author: ", BrandNew.Author); print("Pages: ", BrandNew.Pages); print("Cover: ", BrandNew.CoverType); 10/15/2013
  • 7. Creating Member Functions  To create a member function of a class, type the function keyword followed by a name, the necessary parentheses, and the curly brackets that delimit the body of a function. class FRectangle { var Length : double; var Height : double; function Perimeter() { } } 7 10/15/2013
  • 8. Example 8 class FRectangle { var Length : double; var Height : double; function Perimeter() : double { return (Length + Height) * 2; } function Area() : double { return Length * Height; } function ShowCharacteristics() { print("Rectangle Characteristics"); print("Length: ", Length); print("Height: ", Height); print("Perimeter: ", Perimeter()); print("Area: ", Area()); } } var Recto : FRectangle = new FRectangle; Recto.Length = 24.55; Recto.Height = 20.75; Recto.ShowCharacteristics(); 10/15/2013
  • 9. Class-based Objects  Since JScript is a class-based, object-oriented programming language, it is possible to define classes that can inherit from other classes.  Defined classes can have methods, fields, properties, and subclasses. Inheritance enables classes to build on existing classes and override selected base-class methods and properties.  Creating Your Own Classes  The class statement defines classes. By default, class Visibility are publicly accessible, which means that any Valid for membersModifier class, class member, interface, code that can access the class can also access the public interface member, or enumerations class member. private protected 9 class member class member internal 10/15/2013 class, class member, enumeration
  • 10. Classes with Constructors  You can define a constructor for a class. A constructor, which is a method with the same name as the class, is run when a class is created with the new operator. You may not specify a return type for a constructor. 10 class myClass { const answer : int = 42; // Constant field. var distance : double; // Variable field. function sayHello() :String { // Method. return "Hello"; } // This is the constructor. function myClass(distance : double) { this.distance = distance; } } var c : myClass = new myClass(8.5); print("The distance is " + c.distance); 10/15/2013
  • 11. Advanced Class Creation  When you define a JScript class, you can assign properties, and the defined class can subsequently inherit from other classes.  Classes with Properties  JScript uses function get and function set statements to 11 specify properties. You can specify either or both accessors to create read-only, write-only, or read-write properties, although write-only properties are rare and may indicate a problem with the design of the class.  The calling program accesses properties in the same way that it accesses fields. The main difference is that the getter and setter for the property are used to perform the access, whereas fields are accessed directly.  Properties are usually used to access private or protected fields of the class. 10/15/2013
  • 12.  In this example, properties are used to access a protected field. The field is protected to help prevent outside code from changing its value while allowing derived classes to access it. class Person { // The name of a person. // It is protected so derived classes can access it. protected var name : String; // Define a getter for the property. function get Name() : String { return this.name; } // Define a setter for the property which makes sure that // a blank name is never stored in the name field. function set Name(newName : String) { if (newName == "") throw "You can't have a blank name!"; this.name = newName; } function sayHello() { return this.name + " says 'Hello!'"; } } // Create an object and store the name Fred. var fred : Person = new Person(); fred.Name = "Fred"; print(fred.sayHello()); 12 10/15/2013
  • 13. Inheritance from Classes  The extends keyword is used when defining a class that builds on another class.  JScript can extend most common-language specification (CLS)-compliant classes.  A class defined using the extends keyword is called a derived class, and the class that is extended is called the base class. class Student extends Person { // Override a base-class method. function sayHello() { return this.name + " is studying for finals."; } } var mary : Person = new Student; mary.Name = "Mary"; print(mary.sayHello()); 13 10/15/2013
  • 14. Example class BaseCls { function get Z() : int { return 100 ;} } class DervCls extends BaseCls { hide function get Z() : String { return "*" ;} } class UseClasses { var BObj : BaseCls = new DervCls(); var DObj : DervCls = new DervCls(); function ShowZ() { print("Accessed through base class: " + BObj.Z); print("Accessed through derived class: " + DObj.Z); } 14 } 10/15/2013
  • 15. Example of Method Overloading 15 var methodOverload = new MethodOverload(); methodOverload.Greetings(); methodOverload.Greetings("Mr. Brown"); methodOverload.Greetings(97, "Mr. Brown"); class MethodOverload { function Greetings() { print("Hello, and welcome!"); } function Greetings(name : String) { print("Hello, " + name + "!"); } function Greetings(ticket : int, name : String) { print("Hello, " + name + "! Your ticket number is " + ticket + "."); } } 10/15/2013
  • 16. Prototype-based Objects  Since JScript is an object-oriented programming language, it supports the definition of custom constructor functions and inheritance.  Constructor functions (also called constructors) provide the ability to design and implement your own prototypebased objects.  Inheritance allows prototype-based objects to share a common set of properties and methods that can be dynamically added or removed.  Creating Your Own Objects with Constructor Functions  A powerful feature of JScript is the ability to define 16 constructor functions to create custom prototype-based objects for use in your scripts.  To create an instance of a prototype-based object, you first 10/15/2013 must define a constructor function. This process creates a
  • 17. Constructors with Properties  The following example defines a constructor function for pasta objects. The this statement allows the constructor to initialize the object. • • • • // pasta is a constructor that takes four parameters. function pasta(grain, width, shape, hasEgg) { this.grain = grain; // What grain is it made of? this.width = width; // How many centimeters wide is it? • this.shape = shape; // What is the cross-section? • this.hasEgg = hasEgg; // Does it have egg yolk as a binder? • }  After defining an object constructor, you create 17 instances of the object with the new operator. Here the pasta constructor is used to create spaghetti and linguine objects. 10/15/2013  var spaghetti = new pasta("wheat", 0.2, "circle", true);
  • 18. Advanced Object Creation  JScript supports inheritance with custom prototype- based objects. Through inheritance, prototype-based objects can share a common set of properties and methods that can be dynamically added or removed. Moreover, individual objects can override the default behavior.  Creating a Prototype-based Object  To create an instance of a prototype-based object, you first must 18 define a constructor function.  Once this constructor is written, you can use properties of the prototype object to create inherited properties and shared methods. The constructor provides the instance-specific information to an object, while the prototype object provides the object-specific information and methods to the object.  The this statement enables the method to access members of the object. 10/15/2013
  • 19. Cont… // Define the constructor and add instance specific information. function Circle (radius) { this.r = radius; // The radius of the circle. } // Add a property the Circle prototype. Circle.prototype.pi = Math.PI; function ACirclesArea () { // The formula for the area of a circle is pi*r^2. return this.pi * this.r * this.r; } // Add a method the Circle prototype. Circle.prototype.area = ACirclesArea; // This is how you would invoke the area function on a Circle object. var ACircle = new Circle(2); var a = ACircle.area(); Using this principle, you can define additional properties for existing constructor functions 19 10/15/2013
  • 20. Jscript Object  Intrinsic Objects  JScript provides 16 intrinsic objects as part of the language specification.  Some of the commonly used objects are:  JScript Array Object  JScript Date Object  JScript Math Object  JScript Number Object  JScript Object Object  JScript String Object 20 10/15/2013
  • 21. JScript Array Object  An Array object is a variable that groups related pieces of data.  A unique number, called an index or subscript, references each piece of data in the array. To access the data stored in the array, the array identifier and the index are combined with the index operator "[]", for example, theMonths[0].  Creating an Array  To create a new array, use the new operator and the Array 21 constructor. In this example, the array constructor is used to theMonths[6] = "Jul"; construct an array with length 12. Then, data is entered into the theMonths[7] = "Aug"; array. theMonths[8] = "Sep";  var theMonths = new Array(12);  theMonths[0] = "Jan"; theMonths[9] = "Oct";  theMonths[1] = "Feb"; theMonths[10] = "Nov"; theMonths[11] = "Dec";  theMonths[2] = "Mar";  theMonths[3] = "Apr"; 10/15/2013  theMonths[4] = "May";
  • 22. Cont…  When you create an array using the Array keyword, JScript includes a length property, which records the number of entries.  If you do not specify a number, the length is set to zero, and the array has no entries.  If you specify a number, the length is set to that number. If you specify more than one parameter, the parameters are used as entries in the array.  In addition, the number of parameters is assigned to the length property, as in the following example, which is equivalent to the preceding example.  var theMonths = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"); 22 10/15/2013
  • 23. Cont…  Using Expando Properties of Arrays  Array objects, just as any other object based on the JScript Object object, support expando properties.  Expando properties are new properties that you dynamically add and delete from an array, like array indices.  In addition, adding or deleting expando properties does not change the length property.  For Example: • // Initialize an array with three elements. • var myArray = new Array("Hello", 42, new Date(2000,1,1)); print(myArray.length); // Prints 3. • // Add some expando properties. They will not change the length. myArray.expando = "JScript"; • myArray["another Expando"] = "Windows"; • print(myArray.length); // Still prints 3. 23 Typed Arrays var theMonths : String[] = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug 10/15/2013 "Sep", "Oct", "Nov", "Dec"];
  • 24. Using Typed Arrays  A data type that is followed by a set of square brackets defines a one-dimensional typed array. To define an ndimensional array, the base data type is followed by a set of square brackets with n-1 commas between the brackets.  The following shows some simple array declarations:  // Simple array of strings; initially empty. The variable 'names' itself  // will be null until something is assigned to it  var names : String[];  // Create an array of 50 objects; the variable 'things' won't be null,  // but each element of the array will be until they are assigned 24 values.  var things : Object[] = new Object[50]; // Put the current date and time in 10/15/2013 element 42.
  • 25. Cont…  // An array of arrays of integers; initially it is null.  var matrix : int[][]; // Initialize the array of arrays.  matrix = new (int[])[5]; // Initialize each array in the array of arrays.  for(var i = 0; i<5; i++)  matrix[i] = new int[5]; // Put some values into the matrix.  matrix[2][3] = 6;  matrix[2][4] = 7;  // A three-dimensional array var multidim :  double[,,] = new double[5,4,3]; // Put some values into the matrix. multidim[1,3,0] = Math.PI*5.;  For More details:  http://msdn.microsoft.com/en-us/library/9f2a8x5w(v=vs.80).aspx 25 10/15/2013
  • 26. JScript Date Object  The JScript Date object can be used to represent     26 arbitrary dates and times, to get the current system date, and to calculate differences between dates. It has several predefined properties and methods. The Date object stores a day of the week; a month, day, and year; and a time in hours, minutes, seconds, and milliseconds. This information is based on the number of milliseconds since January 1, 1970, 00:00:00.000 Coordinated Universal Time (UTC), formerly known as Greenwich Mean Time. JScript can handle dates that are in the approximate range from 250,000 B.C. to 255,000 A.D., although 10/15/2013 some formatting functionality is supported only for dates
  • 27. Creating a Date Object  To create a new Date object, use the new operator. var s : String = "Today's date is: "; // Declare variables. var d : Date = new Date(); // Create Date object with today's date. s += (d.getMonth() + 1) + "/"; // Get month s += d.getDate() + "/"; // Get day s += d.getYear(); // Get year. print(s); // Print date. There are many more predefined method are present, please check from following url: http://msdn.microsoft.com/en-us/library/xby9ffhf(v=vs.80).aspx 27 10/15/2013
  • 28. JScript Math Object  The Math object has a number of intrinsic properties and methods. The properties are specific numbers.  Using the Math Object  One of these specific numbers is the value of pi (approximately 3.14159...). This is the value of the Math.PI property, which is used in the following example.  // A radius variable is declared and assigned a numeric value.  var radius = 4;  var area = Math.PI * radius * radius;  // Note capitalization of Math and PI.  One built-in method of the Math object is the exponentiation method, or pow, which raises a number to a specified power. The following example uses both pi and exponentiation.  // This formula calculates the volume of a sphere with the given radius.  var volume = (4/3)*(Math.PI*Math.pow(radius,3)); 28 10/15/2013
  • 29. JScript Number Object  The primary purpose of the Number object is to collect properties and methods that are used for the default numeric data type, the Number data type.  The numeric constants provided by the properties of the Number object are listed in the table below. Property Description MAX_VALUE Largest possible number, about 1.79E+308; can be positive or negative. (Value varies slightly from system to system.) MIN_VALUE Smallest possible number, about 2.22E-308; can be positive or negative. (Value varies slightly from system to system.) NaN Special nonnumeric value, "not a number." POSITIVE_INFINITY Any positive value larger than the largest positive number (Number.MAX_VALUE) is automatically converted to this value; represented as infinity. 29 NEGATIVE_INFINITY 10/15/2013 Any value more negative than the largest negative number (-Number.MAX_VALUE) is automatically
  • 30. Cont…  Number.NaN is a special property that is defined as     30 not a number. Number.NaN is returned when an expression that cannot be represented as a number is used in a numeric context. For example, NaN is returned when either the string "Hello" or 0/0 (zero divided by zero) is used as a number. NaN compares as unequal to any number and to itself. To test for a NaN result, do not compare against Number.NaN; use the isNaN method of the Global object instead. 10/15/2013
  • 31. JScript Object Object  All objects in JScript based on the Object object support expando properties, or properties that can be added and removed while the program is running.  Using the Object Object  These properties can have any name, including numbers. A name of a property that is a simple identifier can be written after a period that follows the object name, such as: • var myObj = new Object(); • // Add two expando properties, 'name' and 'age' • myObj.name = "Fred"; • myObj.age = 53;  You can also access an object's properties using the index operator, [].  This is required if the name of the property is not a simple identifier, or if the name of the property is not known when you write the script. 31 • var myObj = new Object(); • // This identifier contains spaces. • myObj["not a simple identifier"] = "This is the property value"; 10/15/2013 • // This identifier is a number. • myObj[100] = "100";
  • 32. Cont…  Although the index operator is more commonly associated with accessing array elements, the index is always the property name expressed as a string literal when used with objects.  Array objects have a special length property that changes when new elements are added; in general, objects do not have a length propertyname iswhen the indexthat the property The property even treated Meaning operator is used Operator as name to add properties. Period (.) An identifier Cannot be manipulated as  Notice the important difference between the two ways of data accessing object properties. Index ([]) A string literal Can be manipulated as data  This difference becomes useful when you do not know the 32 property names until runtime (for example, when you are constructing objects based on user input). To extract 10/15/2013 all the properties from an associative array, you must use the for ...
  • 33. JScript String Object  A String object in JScript represents textual data such as words and sentences.  String objects are rarely created explicitly with the new operator because they are usually created implicitly by assigning a string literal to a variable.  Using the String Object  The String object has many built-in methods. One of these is the substring method, which returns part of the string.  It takes two numbers as its arguments. The first number is the zerobased index that indicates the beginning of the substring, and the second number indicates the end of the substring. • var aString : String = "0123456789"; • var aChunk : String = aString.substring(4, 7); // Sets aChunk to "456".  The String object also has a length property. This property contains the number of characters in the string (0 for an empty string). This a numeric value and can be used directly in calculations. This example obtains the 10/15/2013 33 length of a string literal.  var howLong : int = "Hello World".length // Sets the howLong variable to
  • 34. Examples o o o o o var primStr : Object = "This is a string"; print(primStr.length); // Read the length property. print(primStr.toUpperCase()); // Call a method. primStr.myProperty = 42; // Set a new property. print(primStr.myProperty); // Try to read it back. For String objects created with the new statement, custom properties can be set: var newStr : Object = new String("This is also a string"); print(newStr.length); // Read the length property. print(newStr.toUpperCase()); // Call a method. newStr.myProperty = 42; // Set a new property. print(newStr.myProperty); // Try to read it back. 34 10/15/2013
  • 35. arguments Object  An object representing the currently executing function,     35 its arguments, and the function that called it. This object cannot be constructed explicitly. The arguments object has no methods. An arguments object is instantiated for each function when it begins execution. The arguments object is directly accessible only within the scope of its associated function. All parameters passed to a function and the number of parameters are stored in the arguments object. The arguments object is not an array, but the individual arguments are accessed using [ ] notation, the same way array elements are accessed. 10/15/2013
  • 36. Example 36 function argTest(a, b) : String { var i : int; var arguments; var s : String = "The argTest function expected "; var numargs : int = arguments.length; // Get number of arguments passed. var expargs : int = argTest.length; // Get number of arguments expected. if (expargs < 2) The arguments object is not s += expargs + " argument. "; available when running in fast else mode, the default for JScript. To s += expargs + " arguments. "; compile a program from the if (numargs < 2) command line that uses s += numargs + " was passed."; the arguments object, you must else turn off the fast option by s += numargs + " were passed."; using /fast-. It is not safe to turn off s += "n" The output: for (i =0 ; i < numargs; i++){ // Get argument the fast option in ASP.NET because contents. The argTest function expected 2 s += " Arg " + i + " = " + arguments[i] + "n"; of threading issues. arguments. 1 was passed. Arg 0 } = return(s); // Return list of arguments. 42 The argTest function expected 2 arguments. 3 were } passed. Arg 0 = Tue Sep 7 print(argTest(42)); print(argTest(new Date(1999,8,7),"Sam",Math.PI)); 00:00:00 PDT 1999 10/15/2013 Arg 1 = Sam
  • 37. Boolean Object  The Boolean object references a Boolean value.  function Boolean( [boolValue : boolean] )  “boolValue” is Optional. The initial Boolean value for the new object. If boolValue is omitted, or is false, 0, null, NaN, or an empty string, the initial value of the Boolean object is false. Otherwise, the initial value is true.  The Boolean object is a wrapper for Boolean data. The primary purposes for the Boolean object are to collect its properties into one object and to allow Boolean values to be converted into strings via the toString method. The Boolean object is similar to the boolean data type. 37 10/15/2013
  • 38. Enumerator Object  Enables enumeration of items in a collection.  varName = new Enumerator([collection])  “varName” is Required. The variable name to which the enumerator is assigned.  “Collection” is Optional. Any object that implements the IEnumerable interface, such as an array or collection.  Every collection is automatically enumerable in JScript. Consequently, you do not need to use the Enumerator object to access members of a collection. You can access any member directly using the for...in statement. The Enumerator object is provided for backwards compatibility.  The Enumerator object, which provides a way to access any member of a collection, behaves in a manner similar to the For...Each statement in VBScript.  You can create a collection in JScript by defining a class that 10/15/2013 38 implements IEnumerable. Collections can also be created
  • 39. Example  The following code uses the Enumerator object to print the letters of the available drives and their names (if available): 39 // Declare variables. var n, x; var fso : ActiveXObject = new ActiveXObject("Scripting.FileSystemObject"); // Create Enumerator on Drives. var e : Enumerator = new Enumerator(fso.Drives); for (;!e.atEnd();e.moveNext()) { // Loop over the drives collection. x = e.item(); if (x.DriveType == 3) // See if network drive. n = x.ShareName; // Get share name else if (x.IsReady) // See if drive is ready. n = x.VolumeName; // Get volume name. 10/15/2013 else n = "[Drive not ready]";
  • 40. ActiveXObject Object  An object that provides an interface to an Automation object. function ActiveXObject(ProgID : String [, location : String])  “ProgID” Required. A string of the form "serverName.typeName", where serverName is the name of the application providing the object, and typeName is the name of the type or class of the object to create.  “Location” Optional. The name of the network server where the object is to be created.   Typically, an automation server provides at least one type of object. For example, a word-processing application may provide an application object, a document object, and a toolbar object.  The following code starts an application (in this case, a Microsoft Excel worksheet) by calling the ActiveXObject object constructor. The ActiveXObject allows you to refer to the application in your code. Using the following example, 10/15/2013 40 you can access properties and methods of the new object
  • 41. Example // Declare the variables var Excel, Book; // Create the Excel application object. Excel = new ActiveXObject("Excel.Application"); // Make Excel visible. Excel.Visible = true; // Create a new work book. Book = Excel.Workbooks.Add() // Place some text in the first cell of the sheet. Book.ActiveSheet.Cells(1,1).Value = "This is column A, row 1"; // Save the sheet. Book.SaveAs("C:TEST.XLS"); // Close Excel with the Quit method on the Application object. Excel.Application.Quit(); http://msdn.microsoft.com/en-us/library/6958xykx.aspx 41 10/15/2013
  • 42. Error Object  Contains information about errors. There are two forms of the Error constructor. o function Error([description : String ]) o function Error([number : Number [, description : String ]]) o “number” Optional. Numeric value assigned to the error, specifying the value of the number property. Zero if omitted. o “description” Optional. Brief string that describes the error, specifying the initial value of the description and message properties. Empty string if omitted.  Error objects can be explicitly created using the constructor shown above. You can add properties to the Error object to expand its capabilities. An Error object is also created whenever a run-time error occurs to describe the error.  Typically, an Error object is thrown with the throw statement and the expectation that it will be caught by a try...catch statement. You can use a throw statement to pass any type of data as an error; the throw statement will not implicitly create an Error object. However, by throwing an Error object, a catch block can treat JScript run-time errors and user-defined errors similarly. 10/15/2013 42
  • 43. Example 43 try { print("Outer try is example  The following running"); illustrates a use of the try try { { print("Nested try is running"); // Throw an error. throw new Error(301, "an error"); }catch(e) throw new Error(42,"No question"); { } catch(e) print("Nested catch caught " + e.message); { throw e; print(e) } // Extract the error code from the error number. finally print(e.number & 0xFFFF) { print("Nested finally is running"); print(e.description) } } } catch(e) { print("Outer catch caught " + e.message); } finally { print("Outer finally is running"); } Error object. 10/15/2013
  • 44. Global Object  An intrinsic object whose purpose is to collect global methods into one object.  The Global object has no syntax. You call its methods directly.  The Global object is never used directly and cannot be created using the new operator. It is created when the scripting engine is initialized, thus making its methods and properties available immediately.  Some of the methods are: 44 o escape Method (Returns an encoded String object that can be read on all computers.) o eval Method (Evaluates JScript code and executes it. ) o isFinite Method (Returns a Boolean value that indicates if a supplied number is finite.) o isNaN Method (Returns a Boolean value that indicates whether a value is the reserved value NaN (not a number). ) o parseFloat Method (Returns a floating-point number converted from a string. ) 10/15/2013 o parseInt Method (Returns an integer converted from a string.)
  • 45. RegExp Object  An intrinsic global object that stores information about the results of regular expression pattern matches. This object cannot be constructed explicitly.  An object that contains a regular expression pattern along with flags that identify how to apply the pattern.  Syntax 1  re = /pattern/[flags]  Syntax 2  45 re = new RegExp("pattern",["flags"]) o re Required. The variable name to which the regular expression pattern is assigned. o pattern Required. The regular expression pattern to use. If you use Syntax 1, delimit the pattern by "/“ characters. If you use Syntax 2, enclose the pattern in quotation marks. o flags Optional. Enclose flag in quotation marks if you use Syntax 2. Available flags, which may be combined, are: 10/15/2013 o · g (global search for all occurrences of pattern) o · i (ignore case)
  • 46. Example: var s : String = "The rain in Spain falls mainly in the plain"; // Create regular expression object using Syntax 1. var re1 : RegExp = new RegExp("Spain","i"); // Create regular expression object using Syntax 2. var re2 : RegExp = /IN/i; // Find a match within string s. print(s.match(re1)); print(s.match(re2)); 46 10/15/2013
  • 47. Regular Expression Syntax A regular expression is a pattern of text that consists of ordinary characters (for example, letters a through z) and special characters, known as metacharacters. The pattern describes one or more strings to match when searching text. Expression Matches /^s*$/ Match a blank line. /d{2}-d{5}/ Validate an ID number consisting of 2 digits, a hyphen, and an additional 5 digits. /<s*(S+)(s[^>]*)?>[sS]*<s*/1s*>/ Match an HTML tag. 47 http://msdn.microsoft.com/enus/library/ae5bf541(v=vs.80).aspx 10/15/2013
  • 48. Regular Expression Programming  You can use regular expressions in JScript to search for patterns in a string, replace text, and extract substrings.  Searching 48 Exec method var src = "The quick brown fox jumps over the lazy dog."; // Create regular expression pattern with a global flag. var re = /w+/g; // Get the next word, starting at the position of lastindex. var arr; while ((arr = re.exec(src)) != null) { print (arr.index + "-" + arr.lastIndex + " " + 10/15/2013 arr[0]);
  • 49. Explanation  The previous JScript example finds all occurrences of a      49 word. The statement that creates the regular expression is var re = /w+/g; The /w+/ pattern specifies to match one or more of any of the following characters: A-Z, a-z, 0-9, and the underscore character. The g (global) flag that follows the pattern specifies that the search should find all occurrences of the pattern instead of just the first occurrence. You can also use the following alternative JScript syntax. var re = new RegExp("w+", "g");  To retrieve each match, the exec Method keeps 10/15/2013
  • 50. Data  The way that JScript copies, passes, and compares data depends on how the data is stored, which in turn depends on the type of the data.  JScript stores data either by value or by reference.  By Value vs. By Reference  JScript copies, passes, and compares numbers and Boolean values (true and false) by value.  This process allocates a space in computer memory and copies the value of the original into it.  Changes to the original do not affect the copy (and vice versa) because the two are separate entities. Two numbers or Boolean values are considered equal if they have the same value. 50 10/15/2013
  • 51. Cont…  JScript copies, passes, and compares objects, arrays, and functions by reference.  This process essentially creates a reference to the original item and uses the reference as if it were a copy.  Changes in any one, change both the original and the copy (and vice versa). There is really only one entity; the copy is just another reference to the data.  Function Parameters  When JScript passes a parameter to a function by value, it makes a separate copy of that parameter that exists only inside the function.  Even though objects and arrays are passed by reference, if a new value in the function directly overwrites them, the new value is not reflected outside the function.  Only changes to properties of objects, or elements of arrays, are visible outside the function. 51 10/15/2013
  • 52. Example • function clobber(param) { • // Overwrite the parameter; this will not be seen in the calling code • param = new Object(); • param.message = "This will not work."; • } • function update(param) { • // Modify the property of the object; this will be seen in the calling code. • param.message = "I was changed."; • } • // Create an object, and give it a property. • var obj = new Object(); • obj.message = "This is the original."; • // Call clobber, and print obj.message. • clobber(obj); • print(obj.message); • // Call update, and print obj.message. • update(obj); • print(obj.message); 52 10/15/2013 • The first function overwrites the input parameter, which prevents further the changes to the parameter from affecting the original input argument.
  • 53. Conditional Compilation  Conditional compilation enables JScript to use new language features without sacrificing compatibility with older versions that do not support the features. Some typical uses for conditional compilation include using new features in JScript, embedding debugging support into a script, and tracing code execution.  http://msdn.microsoft.com/enUS/library/ahx1z4fs(v=vs.80).aspx 53 10/15/2013
  • 54. Debugging in server side  The Microsoft Script Debugger is a powerful debugging     54 tool that can help you quickly locate bugs and interactively test your server-side scripts. You can do the following things using the features of Microsoft Script Debugger: Run your server-side scripts one line at a time. Open a command window to monitor the value of variables, properties, or array elements, during the execution of your server-side scripts. Set pauses to suspend execution of your server-side scripts (using either the debugger or a script command) at a particular line of script. Trace procedures while running your server-side script. 10/15/2013
  • 55. Debugging  To add breakpoints to your server-side scripts written in JScript, insert a debugger statement before a suspect line of script. For example, the following script includes adebugger statement that interrupts execution and automatically starts Script Debugger each time the script loops through a new value. o o o o o <%@ Language= "JScript" %> <% for (var count = 1; count <= 10; count++) { var eventest = count%2 //Set breakpoint so that user can step through execution of script. o debugger o if (eventest == 0) o Response.Write("Even value is " + count + "<br>") } %> 10/15/2013 55 o http://msdn.microsoft.com/en-
  • 56.  Resources:  http://msdn.microsoft.com/en- US/library/9kzd4syw(v=vs.80).aspx  http://msdn.microsoft.com/enUS/library/bsz6d1zs(v=vs.80).aspx 56 10/15/2013