284
JavaScript Rakesh Kumar Jha M. Tech, MBA

Advance java script for mobile with Phonegap

Embed Size (px)

DESCRIPTION

Prototype Adding methods & properties Emumerating properties Inheritance Prototype chaining Copying properties object() The Browser Environment Overview of DOM Overview of BOM

Citation preview

Page 1: Advance java script for mobile with Phonegap

JavaScript

Rakesh Kumar Jha

M. Tech, MBA

Page 2: Advance java script for mobile with Phonegap

Contents for Todays Introduction to JavaScript

Primitive Data Types, Arrays, Loops

Variables

Primitive Data Types

Strings

Arrays

Loops

Functions

Pre-defined functions

Functions & data

Callback

Closure

Scope Chain

Lexical Chain

Objects

Arrays & Objects

Built-in Objects

Hands-on exercises

Page 3: Advance java script for mobile with Phonegap

Contents for Todays

Prototype Adding methods & properties Emumerating properties Inheritance Prototype chaining Copying properties object() The Browser Environment Overview of DOM Overview of BOM

Page 4: Advance java script for mobile with Phonegap

Examples

• JavaScript is scripting language of the Web. • JavaScript is used in billions of Web pages to add functionality, validate forms, communicate with the server, and

much more.

<html> <head> <script type="text/javascript"> function displayDate() { document.getElementById("demo").innerHTML=Date(); } </script> </head> <body> <h1>My First Web Page</h1> <p id="demo">This is a paragraph.</p> <button type="button" onclick="displayDate()">Display Date</button> </body> </html>

Page 5: Advance java script for mobile with Phonegap

JavaScript Introduction

• JavaScript is the most popular scripting language on the internet, and works in all major browsers, such as Internet Explorer, Firefox, Chrome, Opera, and Safari.

Page 6: Advance java script for mobile with Phonegap

What You Should Already Know

• Before you continue you should have a basic understanding of the following:

• HTML and CSS

Page 7: Advance java script for mobile with Phonegap

What is JavaScript?

• JavaScript was designed to add interactivity to HTML pages

• JavaScript is a scripting language • A scripting language is a lightweight programming

language • JavaScript is usually embedded directly into HTML

pages • JavaScript is an interpreted language (means that

scripts execute without preliminary compilation) • Everyone can use JavaScript without purchasing a

license

Page 8: Advance java script for mobile with Phonegap

Are Java and JavaScript the same?

• NO!

• Java and JavaScript are two completely different languages in both concept and design!

• Java (developed by Sun Microsystems) is a powerful and much more complex programming language - in the same category as C and C++.

Page 9: Advance java script for mobile with Phonegap

What Can JavaScript do?

• JavaScript gives HTML designers a programming tool - HTML authors are normally not programmers, but JavaScript is a scripting language with a very simple syntax! Almost anyone can put small "snippets" of code into their HTML pages

• JavaScript can react to events - A JavaScript can be set to execute when something happens, like when a page has finished loading or when a user clicks on an HTML element

• JavaScript can read and write HTML elements - A JavaScript can read and change the content of an HTML element

Page 10: Advance java script for mobile with Phonegap

What Can JavaScript do?

• JavaScript can be used to validate data - A JavaScript can be used to validate form data before it is submitted to a server. This saves the server from extra processing

• JavaScript can be used to detect the visitor's browser - A JavaScript can be used to detect the visitor's browser, and - depending on the browser - load another page specifically designed for that browser

• JavaScript can be used to create cookies - A JavaScript can be used to store and retrieve information on the visitor's computer

Page 11: Advance java script for mobile with Phonegap

JavaScript = ECMAScript

• JavaScript is an implementation of the ECMAScript language standard. ECMA-262 is the official JavaScript standard.

• JavaScript was invented by Brendan Eich at Netscape (with Navigator 2.0), and has appeared in all browsers since 1996.

• The official standardization was adopted by the ECMA organization (an industry standardization association) in 1997.

• The ECMA standard (called ECMAScript-262) was approved as an international ISO (ISO/IEC 16262) standard in 1998.

Page 12: Advance java script for mobile with Phonegap

JavaScript How To

• The HTML <script> tag is used to insert a JavaScript into an HTML page.

<html>

<body> <h1>My First Web Page</h1> <script type="text/javascript"> document.write("<p>" + Date() + "</p>"); </script> </body> </html>

Page 13: Advance java script for mobile with Phonegap

Changing HTML Elements

<html> <body> <h1>My First Web Page</h1> <p id="demo"></p> <script type="text/javascript"> document.getElementById("demo").innerHTML=Date(); </script> </body> </html>

Note: To manipulate HTML elements JavaScript uses the DOM method getElementById(). This method accesses the element with the specified id.

Page 14: Advance java script for mobile with Phonegap

Examples Explained

• To insert a JavaScript into an HTML page, use the <script> tag.

• Inside the <script> tag use the type attribute to define the scripting language.

• The <script> and </script> tells where the JavaScript starts and ends:

• The lines between the <script> and </script> contain the JavaScript and are executed by the browser.

• In this case the browser will replace the content of the HTML element with id="demo", with the current date:

Page 15: Advance java script for mobile with Phonegap

Some Browsers do Not Support JavaScript

• Browsers that do not support JavaScript, will display JavaScript as page content.

• To prevent them from doing this, and as a part of the JavaScript standard, the HTML comment tag should be used to "hide" the JavaScript.

• Just add an HTML comment tag <!-- before the first JavaScript statement, and a --> (end of comment) after the last JavaScript statement, like this:

<html>

<body> <script type="text/javascript"> <!-- document.getElementById("demo").innerHTML=Date(); //--> </script> </body> </html>

Page 16: Advance java script for mobile with Phonegap

JavaScript Where To

• JavaScripts can be put in the

– <body> section and

– <head> sections

– Create separate js file

Page 17: Advance java script for mobile with Phonegap

JavaScript in <body>

<html> <body> <h1>My First Web Page</h1> <p id="demo">This is a paragraph.</p>

<script type="text/javascript"> document.getElementById("demo").innerHTML=Date(); </script>

</body> </html> Note that the JavaScript is placed at the bottom of the page to

make sure it is not executed before the <p> element is created.

Page 18: Advance java script for mobile with Phonegap

JavaScript Functions and Events

• JavaScripts in an HTML page will be executed when the page loads. This is not always what we want.

• Sometimes we want to execute a JavaScript when an event occurs, such as when a user clicks a button. When this is the case we can put the script inside a function.

• Events are normally used in combination with functions (like calling a function when an event occurs).

Page 19: Advance java script for mobile with Phonegap

JavaScript in <head>

<html> <head>

<script type="text/javascript"> function displayDate() { document.getElementById("demo").innerHTML=Date(); }

</script>

</head> <body> <h1>My First Web Page</h1> <p id="demo">This is a paragraph.</p> <button type="button" onclick="displayDate()">Display Date</button> </body> </html>

Page 20: Advance java script for mobile with Phonegap

Scripts in <head> and <body>

• You can place an unlimited number of scripts in your document, and you can have scripts in both the body and the head section at the same time.

• It is a common practice to put all functions in the head section, or at the bottom of the page. This way they are all in one place and do not interfere with page content.

Page 21: Advance java script for mobile with Phonegap

Using an External JavaScript

• JavaScript can also be placed in external files. • External JavaScript files often contain code to be used on several different web

pages. • External JavaScript files have the file extension .js. • Note: External script cannot contain the <script></script> tags! • To use an external script, point to the .js file in the "src" attribute of the <script>

tag: <html>

<head> <script type="text/javascript" src="xxx.js"></script> </head> <body> </body>

</html> Note: Remember to place the script exactly where you normally would write the

script!

Page 22: Advance java script for mobile with Phonegap

JavaScript Statements

• JavaScript is a sequence of statements to be executed by the browser.

Page 23: Advance java script for mobile with Phonegap

JavaScript is Case Sensitive

• Unlike HTML, JavaScript is case sensitive - therefore watch your capitalization closely when you write JavaScript statements, create or call variables, objects and functions.

Page 24: Advance java script for mobile with Phonegap

JavaScript Statements

• A JavaScript statement is a command to a browser. The purpose of the command is to tell the browser what to do.

• This JavaScript statement tells the browser to write "Hello Rakesh" to the web page:

document.write("Hello Rakesh");

It is normal to add a semicolon but The semicolon is optional (according to the

JavaScript standard), Note: Using semicolons makes it possible to write

multiple statements on one line.

Page 25: Advance java script for mobile with Phonegap

JavaScript Code

• JavaScript code (or just JavaScript) is a sequence of JavaScript statements. • Each statement is executed by the browser in the sequence they are written. <html> <body> <script type="text/javascript"> document.write("<h1>This is a heading</h1>"); document.write("<p>This is a paragraph.</p>"); document.write("<p>This is another paragraph.</p>"); </script> </body> </html>

Page 26: Advance java script for mobile with Phonegap

JavaScript Blocks

• JavaScript statements can be grouped together in blocks. • Blocks start with a left curly bracket {, and end with a right curly bracket }. • The purpose of a block is to make the sequence of statements execute together. <html> <body> <script type="text/javascript"> { document.write("<h1>This is a heading</h1>"); document.write("<p>This is a paragraph.</p>"); document.write("<p>This is another paragraph.</p>"); } </script> </body> </html>

Page 27: Advance java script for mobile with Phonegap

JavaScript Comments

• JavaScript comments can be used to make the code more readable. • Comments can be added to explain the JavaScript, or to make the code more readable. • Single line comments start with //. <html> <body> <script type="text/javascript"> // Write a heading document.write("<h1>This is a heading</h1>"); // Write two paragraphs: document.write("<p>This is a paragraph.</p>"); document.write("<p>This is another paragraph.</p>"); </script> </body> </html>

Page 28: Advance java script for mobile with Phonegap

JavaScript Multi-Line Comments

• Multi line comments start with /* and end with */. <html> <body> <script type="text/javascript"> /* The code below will write one heading and two paragraphs */ document.write("<h1>This is a heading</h1>"); document.write("<p>This is a paragraph.</p>"); document.write("<p>This is another paragraph.</p>"); </script> </body> </html>

Page 29: Advance java script for mobile with Phonegap

Using Comments to Prevent Execution

• comment is used to prevent the execution of a single code line <html> <body> <script type="text/javascript"> //document.write("<h1>This is a heading</h1>"); document.write("<p>This is a paragraph.</p>"); document.write("<p>This is another paragraph.</p>"); </script> </body> </html> <script type="text/javascript"> /* document.write("<h1>This is a heading</h1>"); document.write("<p>This is a paragraph.</p>"); document.write("<p>This is another paragraph.</p>"); */ </script> Note - comment is used to prevent the execution of a code block

Page 30: Advance java script for mobile with Phonegap

Using Comments at the End of a Line

• Comment is placed at the end of a code line too <html> <body> <script type="text/javascript"> document.write("Hello"); // Write "Hello" document.write(" Dolly!"); // Write " Dolly!" </script> </body> </html>

Page 31: Advance java script for mobile with Phonegap

JavaScript Variables

• Variables are "containers" for storing information.

• x=5, y=6, z=x+y

• X,y, and z, are called variables, and variables can be used to hold values (x=5) or expressions (z=x+y).

Page 32: Advance java script for mobile with Phonegap

JavaScript Variables

• JavaScript variables are used to hold values or expressions.

• A variable can have a short name, like x, or a more descriptive name, like carname.

Rules for JavaScript variable names: • Variable names are case sensitive (y and Y are two

different variables) • Variable names must begin with a letter, the $

character, or the underscore character • Note: Because JavaScript is case-sensitive, variable

names are case-sensitive.

Page 33: Advance java script for mobile with Phonegap

Example

• A variable's value can change during the execution of a script. You can refer to a variable by its name to display or change its value.

<html> <body> <script type="text/javascript">

var firstname; firstname=“Rakesh"; document.write(firstname); document.write("<br />"); firstname=“Rakesh Kumar "; document.write(firstname);

</script> <p>The script above declares a variable, assigns a value to it, displays the value, changes the value, and displays the value again.</p> </body> </html>

Page 34: Advance java script for mobile with Phonegap

Declaring (Creating) JavaScript Variables

• Creating variables in JavaScript is most often referred to as "declaring" variables.

• You declare JavaScript variables with the var keyword: var x; var carname;

After the declaration shown above, the variables are empty (they have no values yet).

var x=5; var carname=“Innova";

• Note: When you assign a text value to a variable, use quotes around the value.

• Note: If you redeclare a JavaScript variable, it will not lose its value.

Page 35: Advance java script for mobile with Phonegap

Local JavaScript Variables

• A variable declared within a JavaScript function becomes LOCAL and can only be accessed within that function. (the variable has local scope).

• You can have local variables with the same name in different functions, because local variables are only recognized by the function in which they are declared.

• Local variables are destroyed when you exit the function.

Page 36: Advance java script for mobile with Phonegap

Global JavaScript Variables

• Variables declared outside a function become GLOBAL, and all scripts and functions on the web page can access it.

• Global variables are destroyed when you close the page.

• If you declare a variable, without using "var", the variable always becomes GLOBAL.

Page 37: Advance java script for mobile with Phonegap

Assigning Values to Undeclared JavaScript Variables

• If you assign values to variables that have not yet been declared, the variables will automatically be declared as global variables.

x=5;

carname="Volvo";

Page 38: Advance java script for mobile with Phonegap

JavaScript Arithmetic

• you can do arithmetic operations with JavaScript variables:

y=x-5;

z=y+5;

Page 39: Advance java script for mobile with Phonegap

JavaScript Operators

• = is used to assign values.

• + is used to add values. y=5;

z=2;

x=y+z;

Page 40: Advance java script for mobile with Phonegap

JavaScript Arithmetic Operators

• Arithmetic operators are used to perform arithmetic between variables and/or values

Operator Description Example Result

+ Addition x=y+2 x=7 y=5

- Subtraction x=y-2 x=3 y=5

* Multiplication x=y*2 x=10 y=5

/ Division x=y/2 x=2.5 y=5

% Modulus (division remainder) x=y%2 x=1 y=5

++ Increment x=++y x=6 y=6

x=y++ x=5 y=6

-- Decrement x=--y x=4 y=4

x=y-- x=5 y=4

Page 41: Advance java script for mobile with Phonegap

JavaScript Assignment Operators

• Assignment operators are used to assign values to JavaScript variables.

• Given that x=10 and y=5, the table below explains the assignment operators:

Operator Example Same As Result

= x=y x=5

+= x+=y x=x+y x=15

-= x-=y x=x-y x=5

*= x*=y x=x*y x=50

/= x/=y x=x/y x=2

%= x%=y x=x%y x=0

Page 42: Advance java script for mobile with Phonegap

The + Operator Used on Strings

• The + operator can also be used to add string variables or text values together.

• To add two or more string variables together, use the + operator.

txt1="What a very"; txt2="nice day"; txt3=txt1+txt2;

• After the execution of the statements above, the variable txt3 contains "What a verynice day".

• To add a space between the two strings, insert a space into one of the strings:

txt3=txt1+" "+txt2;

Page 43: Advance java script for mobile with Phonegap

Adding Strings and Numbers

• The rule is: If you add a number and a string, the result will be a string! <html> <body> <script type="text/javascript"> var x; x=5+5; document.write(x); document.write("<br />"); x="5"+"5"; document.write(x); document.write("<br />"); x=5+"5"; document.write(x); document.write("<br />"); x="5"+5; document.write(x); document.write("<br />"); </script> <p>The rule is: If you add a number and a string, the result will be a string.</p> </body> </html>

Page 44: Advance java script for mobile with Phonegap

JavaScript Comparison and Logical Operators

• Comparison and Logical operators are used to test for true or false.

Page 45: Advance java script for mobile with Phonegap

Comparison Operators

• Comparison operators are used in logical statements to determine equality or difference between variables or values.

Operator Description Example

== is equal to x==8 is false x==5 is true

=== is exactly equal to (value and type) x===5 is true x==="5" is false

!= is not equal x!=8 is true

> is greater than x>8 is false

< is less than x<8 is true

>= is greater than or equal to x>=8 is false

<= is less than or equal to x<=8 is true

Page 46: Advance java script for mobile with Phonegap

How Can it be Used

• Comparison operators can be used in conditional statements to compare values and take action depending on the result:

if (age<18) document.write("Too young");

Page 47: Advance java script for mobile with Phonegap

Logical Operators

• Logical operators are used to determine the logic between variables or values.

• Given that x=6 and y=3, the table below explains the logical operators:

Operator Description Example

&& and (x < 10 && y > 1) is true

|| or (x==5 || y==5) is false

! not !(x==y) is true

Page 48: Advance java script for mobile with Phonegap

Conditional Operator

• JavaScript also contains a conditional operator that assigns a value to a variable based on some condition.

variablename=(condition)?value1:value2 <html> <body>

<script type="text/javascript"> var visitor="PRES"; var greeting=(visitor=="PRES")?"Dear President ":"Dear "; document.write(greeting);

</script>

</body> </html>

Page 49: Advance java script for mobile with Phonegap

JavaScript If...Else Statements

• Conditional statements are used to perform different actions based on different conditions.

Page 50: Advance java script for mobile with Phonegap

Conditional Statements

Very often when you write code, you want to perform different actions for different decisions. You can use conditional statements in your code to do this.

In JavaScript we have the following conditional statements: • if statement - use this statement to execute some code

only if a specified condition is true • if...else statement - use this statement to execute some

code if the condition is true and another code if the condition is false

• if...else if....else statement - use this statement to select one of many blocks of code to be executed

• switch statement - use this statement to select one of many blocks of code to be executed

Page 51: Advance java script for mobile with Phonegap

If Statement

• Use the if statement to execute some code only if a specified condition is true. <html> <body>

<script type="text/javascript"> var d = new Date(); var time = d.getHours(); if (time < 10) { document.write("<b>Good morning</b>"); }

</script>

<p>This example demonstrates the If statement.</p> <p>If the time on your browser is less than 10, you will get a "Good morning"

greeting.</p> </body> </html>

Page 52: Advance java script for mobile with Phonegap

If...else Statement

• Use the if....else statement to execute some code if a condition is true and another code if the condition is not true.

<html> <body>

<script type="text/javascript"> var d = new Date(); var time = d.getHours(); if (time < 10) { document.write("<b>Good morning</b>"); } else { document.write("<b>Good day</b>"); }

</script> <p> This example demonstrates the If...Else statement. </p> <p>

If the time on your browser is less than 10, you will get a "Good morning" greeting. Otherwise you will get a "Good day" greeting.

</p> </body> </html>

Page 53: Advance java script for mobile with Phonegap

If...else if...else Statement

• Use the if....else if...else statement to select one of several blocks of code to be executed. <html> <body> <script type="text/javascript"> var d = new Date(); var time = d.getHours(); if (time<10) { document.write("<b>Good morning</b>"); } else if (time>=10 && time<16) { document.write("<b>Good day</b>"); } else { document.write("<b>Hello World! good evening</b>"); } </script> <p> This example demonstrates the if..else if...else statement. </p> </body> </html>

Page 54: Advance java script for mobile with Phonegap

JavaScript Switch Statement

• Conditional statements are used to perform different actions based on different conditions. • Use the switch statement to select one of many blocks of code to be executed.

<html> <body>

<script type="text/javascript"> var d=new Date(); var theDay=d.getDay();

switch (theDay) { case 5: document.write("<b>Finally Friday</b>"); break; case 6: document.write("<b>Super Saturday</b>"); break; case 0: document.write("<b>Sleepy Sunday</b>"); break; case 1: document.write("<b>Starting with Monday</b>"); break; default: document.write("<b>I'm really looking forward to this weekend!</b>"); }

</script>

<p>This JavaScript will generate a different greeting based on what day it is. Note that Sunday=0, Monday=1, Tuesday=2, etc.</p> </body> </html>

Page 55: Advance java script for mobile with Phonegap

JavaScript Popup Boxes

• JavaScript has three kind of popup boxes: Alert box, Confirm box, and Prompt box.

Page 56: Advance java script for mobile with Phonegap

Alert Box

• An alert box is often used if you want to make sure information comes through to the user. • When an alert box pops up, the user will have to click "OK" to proceed. <html> <head> <script type="text/javascript"> function show_alert() { alert(“An Example of Alert Box "); } </script> </head> <body> <input type="button" onclick="show_alert()" value="Show alert box" /> </body> </html>

Page 57: Advance java script for mobile with Phonegap

Confirm Box

<html> <head> <script type="text/javascript"> function show_confirm() { var r=confirm("Press a button!"); if (r==true) { alert("You pressed OK!"); } else { alert("You pressed Cancel!"); } } </script> </head> <body> <input type="button" onclick="show_confirm()" value="Show a confirm box" /> </body> </html> • A confirm box is often used if you want the user to verify or accept something. • When a confirm box pops up, the user will have to click either "OK" or "Cancel" to proceed. • If the user clicks "OK", the box returns true. If the user clicks "Cancel", the box returns false.

Page 58: Advance java script for mobile with Phonegap

Prompt Box

• A prompt box is often used if you want the user to input a value before entering a page. • When a prompt box pops up, the user will have to click either "OK" or "Cancel" to proceed after entering an input

value. • If the user clicks "OK" the box returns the input value. If the user clicks "Cancel" the box returns null.

<html> <head> <script type="text/javascript"> function show_prompt() { var name=prompt("Please enter your name",“Rakesh"); if (name!=null && name!="") { document.write("<p>Hello " + name + "! How are you today?</p>"); } } </script> </head> <body> <input type="button" onclick="show_prompt()" value="Show prompt box" /> </body> </html>

Page 59: Advance java script for mobile with Phonegap

JavaScript Functions

• A function will be executed by an event or by a call to the function • To keep the browser from executing a script when the page loads,

you can put your script into a function. • A function contains code that will be executed by an event or by a

call to the function. • You may call a function from anywhere within a page (or even from

other pages if the function is embedded in an external .js file). • Functions can be defined both in the <head> and in the <body>

section of a document. • However, to assure that a function is read/loaded by the browser

before it is called, it could be wise to put functions in the <head> section.

Page 60: Advance java script for mobile with Phonegap

How to Define a Function

<html> <head>

<script type="text/javascript"> function displaymessage() { alert("Hello World!"); } </script>

</head> <body>

<form> <input type="button" value="Click me!" onclick="displaymessage()" /> </form>

<p>By pressing the button above, a function will be called. The function will alert a message.</p> </body> </html>

Page 61: Advance java script for mobile with Phonegap

The return Statement

• The return statement is used to specify the value that is returned from the function. • So, functions that are going to return a value must use the return statement.

<html> <head> <script type="text/javascript"> function product(a,b) { return a*b; } </script> </head> <body> <script type="text/javascript"> document.write(product(4,3)); </script> <p>The script in the body section calls a function with two parameters (4 and 3).</p> <p>The function will return the product of these two parameters.</p> </body> </html>

Page 62: Advance java script for mobile with Phonegap

The Lifetime of JavaScript Variables

• If you declare a variable, using "var", within a function, the variable can only be accessed within that function.

• When you exit the function, the variable is destroyed.

• These variables are called local variables.

• You can have local variables with the same name in different functions, because each is recognized only by the function in which it is declared.

• If you declare a variable outside a function, all the functions on your page can access it. The lifetime of these variables starts when they are declared, and ends when the page is closed.

Page 63: Advance java script for mobile with Phonegap

JavaScript For Loop

• Loops execute a block of code a specified number of times, or while a specified condition is true.

• Often when you write code, you want the same block of code to run over and over again in a row. Instead of adding several almost equal lines in a script we can use loops to perform a task like this.

In JavaScript, there are two different kind of loops: • for - loops through a block of code a specified

number of times • while - loops through a block of code while a

specified condition is true

Page 64: Advance java script for mobile with Phonegap

The for Loop

• The for loop is used when you know in advance how many times the script should run.

<html> <body> <script type="text/javascript"> var i=0; for (i=0;i<=5;i++) { document.write("The number is " + i); document.write("<br />"); } </script> <p>Explanation:</p> <p>This for loop starts with i=0.</p> <p>As long as <b>i</b> is less than, or equal to 5, the loop will continue to run.</p> <p><b>i</b> will increase by 1 each time the loop runs.</p> </body> </html>

Page 65: Advance java script for mobile with Phonegap

JavaScript While Loop

• Loops execute a block of code a specified number of times, or while a specified condition is true. • The while loop loops through a block of code while a specified condition is true. <html> <body> <script type="text/javascript"> i=0; while (i<=5) { document.write("The number is " + i); document.write("<br />"); i++; } </script> <p>Explanation:</p> <p><b>i</b> is equal to 0.</p> <p>While <b>i</b> is less than , or equal to, 5, the loop will continue to run.</p> <p><b>i</b> will increase by 1 each time the loop runs.</p> </body> </html>

Page 66: Advance java script for mobile with Phonegap

The do...while Loop

• The do...while loop is a variant of the while loop. This loop will execute the block of code ONCE, and then it will repeat the loop as long as the specified condition is true.

• The do...while loop will always be executed at least once, even if the condition is false, because the statements are executed before the condition is tested:

<html>

<body> <script type="text/javascript"> var i=0; do { document.write("The number is " + i); document.write("<br />"); i++; } while (i<=5); </script> </body> </html>

Page 67: Advance java script for mobile with Phonegap

The break Statement

• The break statement will break the loop and continue executing the code that follows after the loop (if any). <html> <body> <script type="text/javascript"> var i=0; for (i=0;i<=10;i++) { if (i==3) { break; } document.write("The number is " + i); document.write("<br />"); } </script> <p>Explanation: The loop will break when i=3.</p> </body> </html>

Page 68: Advance java script for mobile with Phonegap

JavaScript Break and Continue Statements

• The break statement will break the loop and continue executing the code that follows after the loop (if any).

Page 69: Advance java script for mobile with Phonegap

The continue Statement

The continue statement will break the current loop and continue with the next value. <html> <body> <script type="text/javascript"> var i=0; for (i=0;i<=10;i++) { if (i==3) { continue; } document.write("The number is " + i); document.write("<br />"); } </script> <p>Explanation: The loop will break the current loop and continue with the next value when i=3.</p> </body> </html>

Page 70: Advance java script for mobile with Phonegap

JavaScript For...In Statement

• The for...in statement loops through the properties of an object • The code in the body of the for...in loop is executed once for each property. <html> <body> <script type="text/javascript"> var person={fname:"John",lname:"Doe",age:25}; var x; for (x in person) { document.write(person[x] + " "); } </script> </body> </html>

Page 71: Advance java script for mobile with Phonegap

JavaScript Events

• Events are actions that can be detected by JavaScript.

Page 72: Advance java script for mobile with Phonegap

Acting to an Event

<html> <head> <script type="text/javascript"> function displayDate() { document.getElementById("demo").innerHTML=Date(); } </script> </head> <body> <h1>My First Web Page</h1> <p id="demo">This is a paragraph.</p> <button type="button" onclick="displayDate()">Display Date</button> </body> </html>

Page 73: Advance java script for mobile with Phonegap

Events

• By using JavaScript, we have the ability to create dynamic web pages. Events are actions that can be detected by JavaScript.

• Every element on a web page has certain events which can trigger a JavaScript.

• For example, we can use the onClick event of a button element to indicate that a function will run when a user clicks on the button. We define the events in the HTML tags.

Page 74: Advance java script for mobile with Phonegap

Events

Examples of events:

• A mouse click

• A web page or an image loading

• Mousing over a hot spot on the web page

• Selecting an input field in an HTML form

• Submitting an HTML form

• A keystroke

Page 75: Advance java script for mobile with Phonegap

onLoad and onUnload

• The onLoad and onUnload events are triggered when the user enters or leaves the page.

• The onLoad event is often used to check the visitor's browser type and browser version, and load the proper version of the web page based on the information.

• Both the onLoad and onUnload events are also often used to deal with cookies that should be set when a user enters or leaves a page.

• For example, you could have a popup asking for the user's name upon his first arrival to your page. The name is then stored in a cookie. Next time the visitor arrives at your page, you could have another popup saying something like: "Welcome Rakesh Jha!".

Page 76: Advance java script for mobile with Phonegap

onFocus, onBlur and onChange

• The onFocus, onBlur and onChange events are often used in combination with validation of form fields.

<input type="text" size="30" id="email" onchange="checkEmail()" />

• The checkEmail() function will be called whenever the user changes the content of the field

Page 77: Advance java script for mobile with Phonegap

onSubmit

• The onSubmit event is used to validate ALL form fields before submitting it.

<form method="post" action="xxx.htm" onsubmit="return checkForm()">

• The checkForm() function will be called when the user clicks the submit button in the form.

• If the field values are not accepted, the submit should be cancelled.

• The function checkForm() returns either true or false.

• f it returns true the form will be submitted, otherwise the submit will be cancelled

Page 78: Advance java script for mobile with Phonegap

onMouseOver • The onmouseover event can be used to trigger a function when the user mouses over an HTML element:

<html> <head>

<script type="text/javascript"> function writeText(txt) { document.getElementById("desc").innerHTML=txt; } </script>

</head> <body>

<img src ="planets.gif" width ="145" height ="126" alt="Planets" usemap="#planetmap" /> <map name="planetmap"> <area shape ="rect" coords ="0,0,82,126" onmouseover="writeText('The Sun and the gas giant planets like Jupiter are by far the largest objects in our Solar System.')" href ="sun.htm" target ="_blank" alt="Sun" /> <area shape ="circle" coords ="90,58,3" onmouseover="writeText('The planet Mercury is very difficult to study from the Earth because it is always so close to the Sun.')" href ="mercur.htm" target ="_blank" alt="Mercury" /> <area shape ="circle" coords ="124,58,8" onmouseover="writeText('Until the 1960s, Venus was often considered a twin sister to the Earth because Venus is the nearest planet to us, and because the two planets

seem to share many characteristics.')" href ="venus.htm" target ="_blank" alt="Venus" /> </map> <p id="desc">Mouse over the sun and the planets and see the different descriptions.</p>

</body>

</html>

Page 79: Advance java script for mobile with Phonegap

JavaScript Try...Catch Statement

• he try...catch statement allows you to test a block of code for errors.

Page 80: Advance java script for mobile with Phonegap

JavaScript - Catching Errors

• When browsing Web pages on the internet, we all have seen a JavaScript alert box telling us there is a runtime error and asking "Do you wish to debug?".

• Error message like this may be useful for developers but not for users.

• When users see errors, they often leave the Web page.

• how to catch and handle JavaScript error messages, so you don't lose your audience.

Page 81: Advance java script for mobile with Phonegap

The try...catch Statement

• The try...catch statement allows you to test a block of code for errors.

• The try block contains the code to be run, and the catch block contains the code to be executed if an error occurs.

• Note that try...catch is written in lowercase letters.

Page 82: Advance java script for mobile with Phonegap

Try…catch - Example

<html> <head> <script type="text/javascript"> var txt=""; function message() { try { adddlert("Welcome guest!"); } catch(err) { txt="There was an error on this page.\n\n"; txt+="Error description: " + err.message + "\n\n"; txt+="Click OK to continue.\n\n"; alert(txt); } } </script> </head> <body> <input type="button" value="View message" onclick="message()" /> </body> </html>

Page 83: Advance java script for mobile with Phonegap

Try…catch - Example

The example below is supposed to alert "Welcome guest!" when the button is clicked.

However, there's a typo in the message() function. alert() is misspelled as adddlert().

A JavaScript error occurs.

The catch block catches the error and executes a custom code to handle it.

The code displays a custom error message informing the user what happened:

Page 84: Advance java script for mobile with Phonegap

Try…catch - Example

• The next example uses a confirm box to display a custom message telling users they can click OK to continue viewing the page or click Cancel to go to the homepage.

• If the confirm method returns false, the user clicked Cancel, and the code redirects the user.

• If the confirm method returns true, the code does nothing:

Page 85: Advance java script for mobile with Phonegap

Try…catch - Example

<html> <head> <script type="text/javascript"> var txt=""; function message() { try { adddlert("Welcome guest!"); } catch(err) { txt="There was an error on this page.\n\n"; txt+="Click OK to continue viewing this page,\n"; txt+="or Cancel to return to the home page.\n\n"; if(!confirm(txt)) { document.location.href="http://www.symphonysv.com/"; } } } </script> </head> <body> <input type="button" value="View message" onclick="message()" /> </body> </html>

Page 86: Advance java script for mobile with Phonegap

The throw Statement

• The throw statement can be used together with the try...catch statement, to create an exception for the error.

• The throw statement allows you to create an exception.

• If you use this statement together with the try...catch statement, you can control program flow and generate accurate error messages.

• The exception can be a string, integer, Boolean or an object.

• Note that throw is written in lowercase letters.

Page 87: Advance java script for mobile with Phonegap

The throw Statement - Example <html> <body> <script type="text/javascript"> var x=prompt("Enter a number between 5 and 10:",""); try { if(x>10) { throw "Err1"; } else if(x<5) { throw "Err2"; } else if(isNaN(x)) { throw "Err3"; } } catch(err) { if(err=="Err1") { document.write("Error! The value is too high."); } if(err=="Err2") { document.write("Error! The value is too low."); } if(err=="Err3") { document.write("Error! The value is not a number."); } } </script> </body> </html>

Page 88: Advance java script for mobile with Phonegap

JavaScript Special Characters

• In JavaScript you can add special characters to a text string by using the backslash sign.

• The backslash (\) is used to insert apostrophes, new lines, quotes, and other special characters into a text string.

var txt="We are the so-called “Rakesh Jha" from the north."; document.write(txt);

In JavaScript, a string is started and stopped with either single or double quotes. This means that the string above will be chopped to:

To solve this problem, you must place a backslash (\) before each double quote in “Rakesh Jha". This turns each double quote into a string literal:

var txt="We are the so-called \“Rakesh Jha\" from the north."; document.write(txt);

Page 89: Advance java script for mobile with Phonegap

JavaScript Special Characters

• The table below lists other special characters that can be added to a text string with the backslash sign:

Code Outputs

\' single quote

\" double quote

\\ backslash

\n new line

\r carriage return

\t tab

\b backspace

\f form feed

Page 90: Advance java script for mobile with Phonegap

JavaScript Guidelines

• JavaScript is Case Sensitive

• White Space

– JavaScript ignores extra spaces

• Break up a Code Line

– You can break up a code line within a text string with a backslash.

Page 91: Advance java script for mobile with Phonegap

JavaScript Objects

Page 92: Advance java script for mobile with Phonegap

Introduction

• JavaScript is an Object Based Programming language.

• An Object Based Programming language allows you to define your own objects and make your own variable types.

Page 93: Advance java script for mobile with Phonegap

Object Based Programming

• What are built-in JavaScript objects, and how they are used.

• Note that an object is just a special kind of data. An object has properties and methods.

Page 94: Advance java script for mobile with Phonegap

Properties

• Properties are the values associated with an object.

• length property of the String object to return the number of characters in a string:

<script type="text/javascript">

var txt="Hello World!";

document.write(txt.length);

</script>

Page 95: Advance java script for mobile with Phonegap

Methods

• Methods are the actions that can be performed on objects.

• the toUpperCase() method of the String object to display a text in uppercase letters:

<script type="text/javascript">

var str="Hello world!";

document.write(str.toUpperCase());

</script>

Page 96: Advance java script for mobile with Phonegap

JavaScript String Object

• The String object is used to manipulate a stored piece of text.

• Few examples

Page 97: Advance java script for mobile with Phonegap

Return the length of a string

<html> <body> <script type="text/javascript"> var txt = "Hello World!"; document.write(txt.length); </script> </body> </html>

Page 98: Advance java script for mobile with Phonegap

Style strings <html> <body> <script type="text/javascript"> var txt = "Hello World!"; document.write("<p>Big: " + txt.big() + "</p>"); document.write("<p>Small: " + txt.small() + "</p>"); document.write("<p>Bold: " + txt.bold() + "</p>"); document.write("<p>Italic: " + txt.italics() + "</p>"); document.write("<p>Fixed: " + txt.fixed() + "</p>"); document.write("<p>Strike: " + txt.strike() + "</p>"); document.write("<p>Fontcolor: " + txt.fontcolor("green") + "</p>"); document.write("<p>Fontsize: " + txt.fontsize(6) + "</p>"); document.write("<p>Subscript: " + txt.sub() + "</p>"); document.write("<p>Superscript: " + txt.sup() + "</p>"); document.write("<p>Link: " + txt.link("http://www.w3schools.com") + "</p>"); document.write("<p>Blink: " + txt.blink() + " (does not work in IE, Chrome, or Safari)</p>"); </script> </body> </html>

Page 99: Advance java script for mobile with Phonegap

The toLowerCase() and toUpperCase() methods

<html> <body> <script type="text/javascript"> var txt="Hello World!"; document.write(txt.toLowerCase() + "<br />"); document.write(txt.toUpperCase()); </script> </body> </html>

Page 100: Advance java script for mobile with Phonegap

The match() method

<html> <body> <script type="text/javascript"> var str="Hello world!"; document.write(str.match("world") + "<br />"); ->world document.write(str.match("World") + "<br />"); ->null document.write(str.match("worlld") + "<br />"); ->null document.write(str.match("wor!")); ->null </script> </body> </html>

Page 101: Advance java script for mobile with Phonegap

Replace characters in a string - replace()

<html> <body> <script type="text/javascript"> var str="Visit Microsoft!"; document.write(str.replace("Microsoft",“AllTechSolution.word

press.com")); </script> </body> </html>

Page 102: Advance java script for mobile with Phonegap

The indexOf() method

<html> <body> <script type="text/javascript"> var str="Hello world!"; document.write(str.indexOf("d") + "<br />"); -> 10 document.write(str.indexOf("WORLD") + "<br />"); -> -1 document.write(str.indexOf("world")); -> 6 </script> </body> </html>

Page 103: Advance java script for mobile with Phonegap

String Object Properties

Property Description

constructor Returns the function that created the String object's prototype

length Returns the length of a string

prototype Allows you to add properties and methods to an object

Page 104: Advance java script for mobile with Phonegap

String Object Methods Method Description

charAt() Returns the character at the specified index

charCodeAt() Returns the Unicode of the character at the specified index

concat() Joins two or more strings, and returns a copy of the joined strings

fromCharCode() Converts Unicode values to characters

indexOf() Returns the position of the first found occurrence of a specified value in a string

lastIndexOf() Returns the position of the last found occurrence of a specified value in a string

match() Searches for a match between a regular expression and a string, and returns the matches

replace() Searches for a match between a substring (or regular expression) and a string, and replaces the matched substring with a new substring

search() Searches for a match between a regular expression and a string, and returns the position of the match

Page 105: Advance java script for mobile with Phonegap

String Object Methods

Method Description

slice() Extracts a part of a string and returns a new string

split() Splits a string into an array of substrings

substr() Extracts the characters from a string, beginning at a specified start position, and through the specified number of character

substring() Extracts the characters from a string, between two specified indices

toLowerCase() Converts a string to lowercase letters

toUpperCase() Converts a string to uppercase letters

valueOf() Returns the primitive value of a String object

Page 106: Advance java script for mobile with Phonegap

String HTML Wrapper Methods • The HTML wrapper methods return the string wrapped inside the appropriate HTML tag.

Method Description

anchor() Creates an anchor

big() Displays a string using a big font

blink() Displays a blinking string

bold() Displays a string in bold

fixed() Displays a string using a fixed-pitch font

fontcolor() Displays a string using a specified color

fontsize() Displays a string using a specified size

italics() Displays a string in italic

link() Displays a string as a hyperlink

small() Displays a string using a small font

strike() Displays a string with a strikethrough

sub() Displays a string as subscript text

sup() Displays a string as superscript text

Page 107: Advance java script for mobile with Phonegap

JavaScript Date Object

• The Date object is used to work with dates and times.

• Date objects are created with the Date() constructor.

• There are four ways of instantiating a date:

• Examples

Page 108: Advance java script for mobile with Phonegap

Return today's date and time

How to use the Date() method to get today's date. <html> <body>

<script type="text/javascript"> var d=new Date(); document.write(d); </script>

</body> </html>

Page 109: Advance java script for mobile with Phonegap

get the year

<html> <body> <script type="text/javascript"> var d=new Date(); document.write(d.getFullYear()); </script> </body> </html>

Page 110: Advance java script for mobile with Phonegap

getTime()

<html>

<body> <script type="text/javascript">

var d=new Date();

document.write(d.getTime() + " milliseconds since 1970/01/01");

</script>

</body>

</html>

Page 111: Advance java script for mobile with Phonegap

setFullYear()

<html> <body> <script type="text/javascript"> var d = new Date(); d.setFullYear(1992,10,3); document.write(d); </script> </body> </html>

Page 112: Advance java script for mobile with Phonegap

setFullYear()

<html> <body> <script type="text/javascript"> var d=new Date(); document.write("Original form: "); document.write(d + "<br />"); document.write("To string (universal time): "); document.write(d.toUTCString()); </script> </body> </html>

Page 113: Advance java script for mobile with Phonegap

toUTCString()

<html> <body> <script type="text/javascript"> var d=new Date(); document.write("Original form : "); document.write(d + "<br />"); document.write("To string (universal time) : "); document.write(d.toUTCString()); </script> </body> </html>

Page 114: Advance java script for mobile with Phonegap

getDay()

<html> <body> <script type="text/javascript"> var d=new Date(); var weekday=new Array(7); weekday[0]="Sunday"; weekday[1]="Monday"; weekday[2]="Tuesday"; weekday[3]="Wednesday"; weekday[4]="Thursday"; weekday[5]="Friday"; weekday[6]="Saturday"; document.write("Today is " + weekday[d.getDay()]); </script> </body> </html>

Page 115: Advance java script for mobile with Phonegap

Display a clock

<html> <head> <script type="text/javascript"> function startTime() { var today=new Date(); var h=today.getHours(); var m=today.getMinutes(); var s=today.getSeconds(); // add a zero in front of numbers<10 m=checkTime(m); s=checkTime(s); document.getElementById('txt').innerHTML=h+":"+m+":"+s; t=setTimeout('startTime()',500); } function checkTime(i) { if (i<10) { i="0" + i; } return i; } </script> </head> <body onload="startTime()"> <div id="txt"></div> </body> </html>

Page 116: Advance java script for mobile with Phonegap

Date Object Properties

• The Date object is used to work with dates and times.

• Date objects are created with new Date().

• There are four ways of instantiating a date:

var d = new Date();

var d = new Date(milliseconds);

var d = new Date(dateString);

var d = new Date(year, month, day, hours, minutes, seconds, milliseconds);

Property Description

Constructor Returns the function that created the Date object's prototype

prototype Allows you to add properties and methods to an object

Page 117: Advance java script for mobile with Phonegap

Date Object Methods Method Description

getDate() Returns the day of the month (from 1-31)

getDay() Returns the day of the week (from 0-6)

getFullYear() Returns the year (four digits)

getHours() Returns the hour (from 0-23)

getMilliseconds() Returns the milliseconds (from 0-999)

getMinutes() Returns the minutes (from 0-59)

getMonth() Returns the month (from 0-11)

getSeconds() Returns the seconds (from 0-59)

getTime() Returns the number of milliseconds since midnight Jan 1, 1970

getTimezoneOffset() Returns the time difference between GMT and local time, in minutes

getUTCDate() Returns the day of the month, according to universal time (from 1-31)

getUTCDay() Returns the day of the week, according to universal time (from 0-6)

getUTCFullYear() Returns the year, according to universal time (four digits)

Page 118: Advance java script for mobile with Phonegap

Date Object Methods Method Description

getUTCHours() Returns the hour, according to universal time (from 0-23)

getUTCMilliseconds() Returns the milliseconds, according to universal time (from 0-999)

getUTCMinutes() Returns the minutes, according to universal time (from 0-59)

getUTCMonth() Returns the month, according to universal time (from 0-11)

getUTCSeconds() Returns the seconds, according to universal time (from 0-59)

getYear() Deprecated. Use the getFullYear() method instead

parse() Parses a date string and returns the number of milliseconds since midnight of January 1, 1970

setDate() Sets the day of the month (from 1-31)

setFullYear() Sets the year (four digits)

setHours() Sets the hour (from 0-23)

setMilliseconds() Sets the milliseconds (from 0-999)

setMinutes() Set the minutes (from 0-59)

setMonth() Sets the month (from 0-11)

Page 119: Advance java script for mobile with Phonegap

Date Object Methods Method Description

setSeconds() Sets the seconds (from 0-59)

setTime() Sets a date and time by adding or subtracting a specified number of milliseconds to/from midnight January 1, 1970

setUTCDate() Sets the day of the month, according to universal time (from 1-31)

setUTCFullYear() Sets the year, according to universal time (four digits)

setUTCHours() Sets the hour, according to universal time (from 0-23)

setUTCMilliseconds() Sets the milliseconds, according to universal time (from 0-999)

setUTCMinutes() Set the minutes, according to universal time (from 0-59)

setUTCMonth() Sets the month, according to universal time (from 0-11)

setUTCSeconds() Set the seconds, according to universal time (from 0-59)

setYear() Deprecated. Use the setFullYear() method instead

toDateString() Converts the date portion of a Date object into a readable string

toGMTString() Deprecated. Use the toUTCString() method instead

toLocaleDateString() Returns the date portion of a Date object as a string, using locale conventions

Page 120: Advance java script for mobile with Phonegap

Date Object Methods Method Description

toLocaleTimeString() Returns the time portion of a Date object as a string, using locale conventions

toLocaleString() Converts a Date object to a string, using locale conventions

toString() Converts a Date object to a string

toTimeString() Converts the time portion of a Date object to a string

toUTCString() Converts a Date object to a string, according to universal time

UTC() Returns the number of milliseconds in a date string since midnight of January 1, 1970, according to universal time

valueOf() Returns the primitive value of a Date object

Page 121: Advance java script for mobile with Phonegap

Set Dates

• We can easily manipulate the date by using the methods available for the Date object.

var myDate=new Date();

myDate.setFullYear(2010,0,14);

var myDate=new Date();

myDate.setDate(myDate.getDate()+5);

Note: If adding five days to a date shifts the month or year, the changes are handled automatically by the Date object itself

Page 122: Advance java script for mobile with Phonegap

Compare Two Dates

• The Date object is also used to compare two dates.

var x=new Date(); x.setFullYear(2012,0,14); var today = new Date(); if (x>today) { alert("Today is before 14th January 2012"); } else { alert("Today is after 14th January 2012"); }

Page 123: Advance java script for mobile with Phonegap

JavaScript Array Object

• The Array object is used to store multiple values in a single variable.

Page 124: Advance java script for mobile with Phonegap

Create an array

Create an array, assign values to it, and write the values to the output. <html> <body> <script type="text/javascript"> var i; var mycars = new Array(); mycars[0] = "Saab"; mycars[1] = "Volvo"; mycars[2] = "BMW"; for (i=0;i<mycars.length;i++) { document.write(mycars[i] + "<br />"); } </script> </body> </html>

Page 125: Advance java script for mobile with Phonegap

What is an Array?

• An array is a special variable, which can hold more than one value, at a time.

• If you have a list of items (a list of car names, for example), storing the cars in single variables could look like this:

• Each element in the array has its own ID so that it can be easily accessed.

Page 126: Advance java script for mobile with Phonegap

Array Object

• The Array object is used to store multiple values in a single variable.

Page 127: Advance java script for mobile with Phonegap

Array Object Properties

Property Description

constructor Returns the function that created the Array object's prototype

length Sets or returns the number of elements in an array

prototype Allows you to add properties and methods to an object

Page 128: Advance java script for mobile with Phonegap

Array Object Methods Method Description

concat() Joins two or more arrays, and returns a copy of the joined arrays

join() Joins all elements of an array into a string

pop() Removes the last element of an array, and returns that element

push() Adds new elements to the end of an array, and returns the new length

reverse() Reverses the order of the elements in an array

shift() Removes the first element of an array, and returns that element

slice() Selects a part of an array, and returns the new array

sort() Sorts the elements of an array

splice() Adds/Removes elements from an array

toString() Converts an array to a string, and returns the result

unshift() Adds new elements to the beginning of an array, and returns the new length

valueOf() Returns the primitive value of an array

Page 129: Advance java script for mobile with Phonegap

JavaScript Boolean Object

• The Boolean object is used to convert a non-Boolean value to a Boolean value (true or false).

Page 130: Advance java script for mobile with Phonegap

Check Boolean value

Check if a Boolean object is true or false. <html> <body> <script type="text/javascript"> var b1=new Boolean(0); var b2=new Boolean(1); var b3=new Boolean(""); var b4=new Boolean(null); var b5=new Boolean(NaN); var b6=new Boolean("false"); document.write("0 is boolean "+ b1 +"<br />"); document.write("1 is boolean "+ b2 +"<br />"); document.write("An empty string is boolean "+ b3 + "<br />"); document.write("null is boolean "+ b4+ "<br />"); document.write("NaN is boolean "+ b5 +"<br />"); document.write("The string 'false' is boolean "+ b6 +"<br />"); </script> </body> </html>

Page 131: Advance java script for mobile with Phonegap

Boolean Object Properties

Property Description

constructor Returns the function that created the Boolean object's prototype

prototype Allows you to add properties and methods to an object

Page 132: Advance java script for mobile with Phonegap

Boolean Object Methods

Method Description

toString() Converts a Boolean value to a string, and returns the result

valueOf() Returns the primitive value of a Boolean object

Page 133: Advance java script for mobile with Phonegap

Create a Boolean Object

If the Boolean object has no initial value, or if the passed value is one of the following:

• 0

• -0

• null

• ""

• false

• undefined

• NaN

Page 134: Advance java script for mobile with Phonegap

JavaScript Math Object

• The Math object allows you to perform mathematical tasks. • round()

How to use round(). • random()

How to use random() to return a random number between 0 and 1.

• max() How to use max() to return the number with the highest value of two specified numbers.

• min() How to use min() to return the number with the lowest value of two specified numbers.

Page 135: Advance java script for mobile with Phonegap

Math Object Properties

Property Description

E Returns Euler's number (approx. 2.718)

LN2 Returns the natural logarithm of 2 (approx. 0.693)

LN10 Returns the natural logarithm of 10 (approx. 2.302)

LOG2E Returns the base-2 logarithm of E (approx. 1.442)

LOG10E Returns the base-10 logarithm of E (approx. 0.434)

PI Returns PI (approx. 3.14159)

SQRT1_2 Returns the square root of 1/2 (approx. 0.707)

SQRT2 Returns the square root of 2 (approx. 1.414)

Page 136: Advance java script for mobile with Phonegap

Math Object Methods Method Description

abs(x) Returns the absolute value of x

acos(x) Returns the arccosine of x, in radians

asin(x) Returns the arcsine of x, in radians

atan(x) Returns the arctangent of x as a numeric value between -PI/2 and PI/2 radians

atan2(y,x) Returns the arctangent of the quotient of its arguments

ceil(x) Returns x, rounded upwards to the nearest integer

cos(x) Returns the cosine of x (x is in radians)

exp(x) Returns the value of Ex

floor(x) Returns x, rounded downwards to the nearest integer

log(x) Returns the natural logarithm (base E) of x

max(x,y,z,...,n) Returns the number with the highest value

min(x,y,z,...,n) Returns the number with the lowest value

Page 137: Advance java script for mobile with Phonegap

Math Object Methods Method Description

pow(x,y) Returns the value of x to the power of y

random() Returns a random number between 0 and 1

round(x) Rounds x to the nearest integer

sin(x) Returns the sine of x (x is in radians)

sqrt(x) Returns the square root of x

tan(x) Returns the tangent of an angle

Page 138: Advance java script for mobile with Phonegap

Use Math Object

• The Math object allows you to perform mathematical tasks.

• The Math object includes several mathematical constants and methods.

var x=Math.PI;

var y=Math.sqrt(16);

Note: Math is not a constructor. All properties and methods of Math can be called by using Math as an object without creating it.

Page 139: Advance java script for mobile with Phonegap

Use Mathematical Constants

• JavaScript provides eight mathematical constants that can be accessed from the Math object. These are: E, PI, square root of 2, square root of 1/2, natural log of 2, natural log of 10, base-2 log of E, and base-10 log of E.

Math.E

Math.PI

Math.SQRT2

Math.SQRT1_2

Math.LN2

Math.LN10

Math.LOG2E

Math.LOG10E

Page 140: Advance java script for mobile with Phonegap

Use Mathematical Methods

• document.write(Math.round(4.7));

• document.write(Math.random());

• document.write(Math.floor(Math.random()*11));

Page 141: Advance java script for mobile with Phonegap

JavaScript RegExp Object

• RegExp, is short for regular expression.

Page 142: Advance java script for mobile with Phonegap

What is RegExp?

• A regular expression is an object that describes a pattern of characters..

• When you search in a text, you can use a pattern to describe what you are searching for.

• A simple pattern can be one single character.

• A more complicated pattern can consist of more characters, and can be used for parsing, format checking, substitution and more.

Page 143: Advance java script for mobile with Phonegap

What is RegExp?

Regular expressions are used to perform powerful pattern-matching and "search-and-replace" functions on text

var patt=new RegExp(pattern,modifiers);

or more simply:

var patt=/pattern/modifiers;

• pattern specifies the pattern of an expression

• modifiers specify if a search should be global, case-sensitive, etc.

Page 144: Advance java script for mobile with Phonegap

RegExp Modifiers

• Modifiers are used to perform case-insensitive and global searches.

• The i modifier is used to perform case-insensitive matching.

• The g modifier is used to perform a global match (find all matches rather than stopping after the first match).

Page 145: Advance java script for mobile with Phonegap

RegExp Modifiers

var str="Visit W3Schools"; var patt1=/w3schools/i; Result - Visit W3Schools var str="Is this all there is?"; var patt1=/is/g; Result - Is this all there is? var str="Is this all there is?"; var patt1=/is/gi; Result - Is this all there is?

Note - Bold are matched

Page 146: Advance java script for mobile with Phonegap

test() to Search

• The test() method searches a string for a specified value, and returns true or false, depending on the result.

• The following example searches a string for the character "e":

var patt1=new RegExp("e");

document.write(patt1.test("The best things in life are free"));

Result - true

Page 147: Advance java script for mobile with Phonegap

exec() to Search

• The exec() method searches a string for a specified value, and returns the text of the found value. If no match is found, it returns null.

var patt1=new RegExp("e");

document.write(patt1.exec("The best things in life are free"));

Result – e

Page 148: Advance java script for mobile with Phonegap

RegExp Object

• A regular expression is an object that describes a pattern of characters.

• Regular expressions are used to perform pattern-matching and "search-and-replace" functions on text.

Page 149: Advance java script for mobile with Phonegap

Modifier

• Modifiers are used to perform case-insensitive and global searches:

Modifier Description

i Perform case-insensitive matching

g Perform a global match (find all matches rather than stopping after the first match)

m Perform multiline matching

Page 150: Advance java script for mobile with Phonegap

Brackets

• Brackets are used to find a range of characters

Expression Description

[abc] Find any character between the brackets

[^abc] Find any character not between the brackets

[0-9] Find any digit from 0 to 9

[A-Z] Find any character from uppercase A to uppercase Z

[a-z] Find any character from lowercase a to lowercase z

[A-z] Find any character from uppercase A to lowercase z

[adgk] Find any character in the given set

[^adgk] Find any character outside the given set

(red|blue|green) Find any of the alternatives specified

Page 152: Advance java script for mobile with Phonegap

Metacharacters

• Metacharacters are characters with a special meaning:

Metacharacter Description

\n Find a new line character

\f Find a form feed character

\r Find a carriage return character

\t Find a tab character

\v Find a vertical tab character

\xxx Find the character specified by an octal number xxx

\xdd Find the character specified by a hexadecimal number dd

\uxxxx Find the Unicode character specified by a hexadecimal number xxxx

\n Find a new line character

\f Find a form feed character

Page 153: Advance java script for mobile with Phonegap

Quantifiers

Quantifier Description

n+ Matches any string that contains at least one n

n* Matches any string that contains zero or more occurrences of n

n? Matches any string that contains zero or one occurrences of n

n{X} Matches any string that contains a sequence of X n's

n{X,Y} Matches any string that contains a sequence of X to Y n's

n{X,} Matches any string that contains a sequence of at least X n's

n$ Matches any string with n at the end of it

^n Matches any string with n at the beginning of it

?=n Matches any string that is followed by a specific string n

?!n Matches any string that is not followed by a specific string n

Page 154: Advance java script for mobile with Phonegap

RegExp Object Properties

Property Description

global Specifies if the "g" modifier is set

ignoreCase Specifies if the "i" modifier is set

lastIndex The index at which to start the next match

multiline Specifies if the "m" modifier is set

source The text of the RegExp pattern

Page 155: Advance java script for mobile with Phonegap

RegExp Object Methods

Method Description

compile() Compiles a regular expression

exec() Tests for a match in a string. Returns the first match

test() Tests for a match in a string. Returns true or false

Method Description

compile() Compiles a regular expression

Page 156: Advance java script for mobile with Phonegap

Today Contents

Prototype Adding methods & properties Emumerating properties Inheritance Prototype chaining Copying properties object() The Browser Environment Overview of DOM Overview of BOM

Page 157: Advance java script for mobile with Phonegap

Prototype

Page 158: Advance java script for mobile with Phonegap

Prototype

• The prototype property allows you to add properties and methods to an object.

object.prototype.name=value

Page 159: Advance java script for mobile with Phonegap

Prototype <!DOCTYPE html>

<html>

<body>

<p id="demo"></p>

<script>

function employee(name, jobtitle, born) {

this.name=name;

this.jobtitle=jobtitle;

this.born=born;

}

employee.prototype.salary = 2000;

var fred = new employee("Fred Flintstone", "Caveman", 1970);

document.getElementById("demo").innerHTML = fred.salary;

</script>

</body>

</html>

Page 160: Advance java script for mobile with Phonegap

Prototype

• Every JavaScript object has a prototype. The prototype is also an object.

• All JavaScript objects inherit their properties and methods from their prototype.

Page 161: Advance java script for mobile with Phonegap

JavaScript Prototypes

• All JavaScript objects inherit the properties and methods from their prototype.

• Objects created using an object literal, or with new Object(), inherit from a prototype called Object.prototype.

• Objects created with new Date() inherit the Date.prototype.

• The Object.prototype is on the top of the prototype chain.

• All JavaScript objects (Date, Array, RegExp, Function, ....) inherit from the Object.prototype.

Page 162: Advance java script for mobile with Phonegap

Creating a Prototype

• The standard way to create an object prototype is to use an object constructor function:

function person(first, last, age, eyecolor) {

this.firstName = first;

this.lastName = last;

this.age = age;

this.eyeColor = eyecolor;

}

Page 163: Advance java script for mobile with Phonegap

Creating a Prototype

• With a constructor function, you can use the new keyword to create new objects from the same prototype:

var mySelf = new person(“Rakesh", “Jha", 30, "blue");

var myFriend = new person(“Mohan", “Kumar", 28, "green");

Page 164: Advance java script for mobile with Phonegap

Creating a Prototype

<!DOCTYPE html> <html> <body> <p id="demo"></p> <script> function person(first, last, age, eye) { this.firstName = first; this.lastName = last; this.age = age; this.eyeColor = eye; } var mySelf = new person("Rakesh", "Jha", 30, "Black"); var myFriend = new person("Mohan", "Kumar", 28, "Blue"); document.getElementById("demo").innerHTML = "My Self " + mySelf .age + ". My friends is " + myFriend .age; </script> </body> </html>

Page 165: Advance java script for mobile with Phonegap

Adding Properties and Methods to Objects

• Sometimes you want to add new properties (or methods) to an existing object.

• Sometimes you want to add new properties (or methods) to all existing objects of a given type.

• Sometimes you want to add new properties (or methods) to an object prototype.

Page 166: Advance java script for mobile with Phonegap

Adding a Property to an Object

• Adding a new property to an existing object is easy:

Example

• mySelf.nationality = “Indian";

Page 167: Advance java script for mobile with Phonegap

Adding a Property to an Object

<!DOCTYPE html> <html> <body> <p id="demo"></p> <script> function person(first, last, age, eye) { this.firstName = first; this.lastName = last; this.age = age; this.eyeColor = eye; } var mySelf = new person("John", "Doe", 50, "blue"); var myFriends = new person("Sally", "Rally", 48, "green"); mySelf.nationality = "Indian"; document.getElementById("demo").innerHTML = "My Self from " + mySelf.nationality; </script> </body> </html>

Page 168: Advance java script for mobile with Phonegap

Adding a Method to an Object <!DOCTYPE html> <html> <body> <p id="demo"></p> <script> function person(first, last, age, eye) { this.firstName = first; this.lastName = last; this.age = age; this.eyeColor = eye; } var mySelf = new person("Rakesh", "Jha", 30, "blue"); var myFriends = new person("Mohan", "Kumar", 28, "green"); mySelf.name = function() { return this.firstName + " " + this.lastName; }; document.getElementById("demo").innerHTML = "My self " + mySelf .name(); </script> </body> </html>

Page 169: Advance java script for mobile with Phonegap

Adding Properties to a Prototype

<!DOCTYPE html> <html> <body> <p id="demo"></p> <script> function person(first, last, age, eye) { this.firstName = first; this.lastName = last; this.age = age; this.eyeColor = eye; this.nationality = "Indian"; } var mySelf = new person("Rakesh", "Jha", 50, "blue"); var myFriends = new person("Mohan", "Kumar", 48, "green"); document.getElementById("demo").innerHTML = "My Self from " + mySelf.nationality + ". My Friends is " + myFriends.nationality; </script> </body> </html>

Page 170: Advance java script for mobile with Phonegap

JavaScript - Testing Prototype

Page 171: Advance java script for mobile with Phonegap

Adding Properties to a Prototype

Testing JavaScript Framework Libraries – Prototype

Page 172: Advance java script for mobile with Phonegap

Including Prototype

Page 173: Advance java script for mobile with Phonegap

Including Prototype

• To test a JavaScript library, you need to include it in your web page.

• To include a library, use the <script> tag with the src attribute set to the URL of the library:

<head> <script src="http://ajax.googleapis.com/ajax/libs/prototype/1.7.2.0/prototype.js"></script> </head>

Page 174: Advance java script for mobile with Phonegap

Prototype Described

• Prototype provides functions to make HTML DOM programming easier.

• Like jQuery, Prototype has its $() function.

• The $() function accepts HTML DOM element id values (or DOM elements), and adds new functionality to DOM objects.

Page 175: Advance java script for mobile with Phonegap

Prototype Described

The JavaScript Way:

function myFunction() { var obj = document.getElementById("h01"); obj.innerHTML = "Hello Prototype"; } onload = myFunction;

Page 176: Advance java script for mobile with Phonegap

Prototype Described

• The Prototype Way:

function myFunction() { $("h01").insert("Hello Prototype!"); } Event.observe(window, "load", myFunction);

Page 177: Advance java script for mobile with Phonegap

Prototype Described

• Event.observe() accepts three arguments:

• The HTML DOM or BOM (Browser Object Model) object you want to handle

• The event you want to handle

• The function you want to call

Page 178: Advance java script for mobile with Phonegap

Testing Prototype

<!DOCTYPE html> <html> <head> <script src="http://ajax.googleapis.com/ajax/libs/prototype/1.7.2.0/prototype.js"> </script> <script> function myFunction() { $("h01").insert("Hello Prototype!"); } Event.observe(window, "load", myFunction); </script> </head> <body> <h1 id="h01"></h1> </body> </html>

Page 179: Advance java script for mobile with Phonegap

Testing Prototype

<!DOCTYPE html> <html> <head> <script src="http://ajax.googleapis.com/ajax/libs/prototype/1.7.2.0/prototype.js"> </script> <script> function myFunction() { $("h01").writeAttribute("style","color:red").insert("Hello Prototype!"); } Event.observe(window,"load",myFunction); </script> </head> <body> <h1 id="h01"></h1> </body> </html>

Page 180: Advance java script for mobile with Phonegap

Testing Prototype

• Above examples are like jQuery, Prototype allows chaining.

• Chaining is a handy way to perform multiple tasks on one object.

Page 181: Advance java script for mobile with Phonegap

Enumerating properties

• In JavaScript, enumeration across regular (non-Array) Objects is often more painful than it should be.

Page 182: Advance java script for mobile with Phonegap

Enumerating properties

• If you want to list all properties of an object, you can use a for-in loop.

var a = [1, 2, 3]; for (var i in a) { console.log(a[i]); }

Page 183: Advance java script for mobile with Phonegap

Enumerating properties

var o = {p1: 1, p2: 2}; for (var i in o) { console.log(i + '=' + o[i]); }This produces:

p1=1

p2=2

Page 184: Advance java script for mobile with Phonegap

There are some details to be aware of:

• Not all properties show up in a for-in loop.

• For example, the length (for arrays) and constructor properties will not show up. The properties that do show up are called enumerable.

• You can check which ones are enumerable with the help of the propertyIsEnumerable() method that everyobject provides.

Page 185: Advance java script for mobile with Phonegap

There are some details to be aware of:

• Prototypes that come through the prototype chain will also show up, provided they are enumerable.

• You can check if a property is an own property versus prototype's using the hasOwnProperty() method.

• propertyIsEnumerable() will return false for all of the prototype's properties, even those that are enumerable and will show up in thefor-in loop.

Page 186: Advance java script for mobile with Phonegap

There are some details to be aware of:

function Gadget(name, color) { this.name = name; this.color = color; this.someMethod = function(){return 1;} } Gadget.prototype.price = 100; Gadget.prototype.rating = 3;

Page 187: Advance java script for mobile with Phonegap

There are some details to be aware of:

• Creating a new object:

• var newtoy = new Gadget('webcam', 'black');Now if you loop using a for-in, you see of the object's all properties, including those that come from the prototype:

• for (var prop in newtoy) { console.log(prop + ' = ' + newtoy[prop]); }

Page 188: Advance java script for mobile with Phonegap

There are some details to be aware of:

• Creating a new object:

• var newtoy = new Gadget('webcam', 'black');Now if you loop using a for-in, you see of the object's all properties, including those that come from the prototype:

• for (var prop in newtoy) { console.log(prop + ' = ' + newtoy[prop]); }

Page 189: Advance java script for mobile with Phonegap

Inheritance

Page 190: Advance java script for mobile with Phonegap

Inheritance

• Inheritance is object-oriented code reuse.

• Two Schools:-

Classical

Prototypal

Page 191: Advance java script for mobile with Phonegap

Classical Inheritance

• Objects are instances of Classes.

• A Class inherits from another Class.

Page 192: Advance java script for mobile with Phonegap

Pseudo classical

• Pseudoclassical looks sort of classical, but is really prototypal.

• Three mechanisms:

• Constructor functions.

• The prototype member of functions.

• The new operator.

Page 193: Advance java script for mobile with Phonegap

Pseudo classical

function Constructor() {

this.member = initializer;

return this; // optional

}

Constructor.prototype.firstMethod =

function (a, b) {...};

Constructor.prototype.secondMethod =

function (c) {...};

var newObject = new Constructor();

Page 194: Advance java script for mobile with Phonegap

new operator

var newObject = new Constructor();

• new Constructor() returns a new object with a link to Constructor.prototype.

Page 195: Advance java script for mobile with Phonegap

Warning

• The new operator is required when calling a Constructor.

• If new is omitted, the global object is clobbered by the

constructor, and then the global object is returned instead of a new instance.

Page 196: Advance java script for mobile with Phonegap

Pseudoclassical Inheritance

• Classical inheritance can be simulated by assigning an object created by one constructor to the prototype member of another.

– function BiggerConstructor() {...};

– BiggerConstructor.prototype =

– new Constructor();

• This does not work exactly like the classical model.

Page 197: Advance java script for mobile with Phonegap

Example

prototype

id string

constructor

toString function

function Gizmo(id) {

this.id = id;

}

Gizmo.prototype.toString = function () {

return "gizmo " + this.id;

};

prototype

constructor

toString function

new Gizmo(string)

Gizmo

Object

Page 198: Advance java script for mobile with Phonegap

Example

prototype

id string

constructor

toString function

function Gizmo(id) {

this.id = id;

}

Gizmo.prototype.toString = function () {

return "gizmo " + this.id;

};

prototype

constructor

toString function

new Gizmo(string)

Gizmo

Object

Page 199: Advance java script for mobile with Phonegap

Example

prototype

id string

constructor

toString function

function Gizmo(id) {

this.id = id;

}

Gizmo.prototype.toString = function () {

return "gizmo " + this.id;

};

prototype

constructor

toString function

new Gizmo(string)

Gizmo

Object

Page 200: Advance java script for mobile with Phonegap

Inheritance

• If we replace the original prototype object with an instance of an object of another class, then we can inherit another class's stuff.

Page 201: Advance java script for mobile with Phonegap

Example

function Hoozit(id) {

this.id = id;

}

Hoozit.prototype = new Gizmo();

Hoozit.prototype.test = function (id) {

return this.id === id;

};

Page 202: Advance java script for mobile with Phonegap

Example

prototype

id string

prototype

test function

function Hoozit(id) {

this.id = id;

}

Hoozit.prototype = new Gizmo();

Hoozit.prototype.test = function (id) {

return this.id === id;

};

constructor

constructor

toString function

Gizmo

Hoozit

new Hoozit(string)

Page 203: Advance java script for mobile with Phonegap

Example

prototype

id string

prototype

test function

function Hoozit(id) {

this.id = id;

}

Hoozit.prototype = new Gizmo();

Hoozit.prototype.test = function (id) {

return this.id === id;

};

constructor

constructor

toString function

Gizmo

Hoozit

new Hoozit(string)

Page 204: Advance java script for mobile with Phonegap

Prototypal Inheritance

• Class-free.

• Objects inherit from objects.

• An object contains a secret link to the object it inherits from.

var newObject = object(oldObject);

newObject oldObject

Page 205: Advance java script for mobile with Phonegap

object function function object(o) {

function F() {}

F.prototype = o;

return new F();

}

newObject = object(oldObject)

Page 206: Advance java script for mobile with Phonegap

Prototypal Inheritance

var oldObject = {

firstMethod: function () {...},

secondMethod: function () {...}

};

var newObject = object(oldObject);

newObject.thirdMethod = function () {...};

var myDoppelganger = object(newObject);

myDoppelganger.firstMethod();

Page 207: Advance java script for mobile with Phonegap

Prototypal Inheritance

• There is no limit to the length of the chain (except common sense).

oldObject

myDoppelganger = object(newObject);

newObject

Page 208: Advance java script for mobile with Phonegap

Augmentation

• Using the object function, we can quickly produce new objects that have the same state and behavior as existing objects.

• We can then augment each of the instances by assigning new methods and members.

Page 209: Advance java script for mobile with Phonegap

Public Method

• A Public Method is a function that uses this to access its object.

• This binding of this to an object happens at invocation time.

• A Public Method can be reused with many "classes".

Page 210: Advance java script for mobile with Phonegap

Public Methods

myObject.method = function (string) {

return this.member + string;

};

• We can put this function in any object at it works.

• Public methods work extremely well with prototypal inheritance and with pseudoclassical inheritance.

Page 211: Advance java script for mobile with Phonegap

Singletons

• There is no need to produce a class-like constructor for an object that will have exactly one instance.

• Instead, simply use an object literal.

Page 212: Advance java script for mobile with Phonegap

Singletons

var singleton = {

firstMethod: function (a, b) {

...

},

secondMethod: function (c) {

...

}

};

Page 213: Advance java script for mobile with Phonegap

Functions are used as

• Functions

• Methods

• Constructors

• Classes

• Modules

Page 214: Advance java script for mobile with Phonegap

Module

• Variables defined in a module are only visible in the module.

• Functions have scope.

• Variables defined in a function only visible in the function.

• Functions can be used a module containers.

Page 215: Advance java script for mobile with Phonegap

Global variables are evil

• Functions within an application can clobber each other.

• Cooperating applications can clobber each other.

• Use of the global namespace must be minimized.

Page 216: Advance java script for mobile with Phonegap

Singletons

• The methods of a singleton can enjoy access to shared private data and private methods.

Page 217: Advance java script for mobile with Phonegap

Singletons

var singleton = function () {

var privateVariable;

function privateFunction(x) {

...privateVariable...

}

return {

firstMethod: function (a, b) {

...privateVariable...

},

secondMethod: function (c) {

...privateFunction()...

}

};

}();

Page 218: Advance java script for mobile with Phonegap

Applications are Singletons

var AJAX = function () {

var privateVariable;

function privateFunction(x) {

...privateVariable...

}

return {

firstMethod: function (a, b) {

...privateVariable...

},

secondMethod: function (c) {

...privateFunction()...

}

};

}();

Page 219: Advance java script for mobile with Phonegap

Privacy

• All members of an object are public.

• We want private variables and private methods.

• Really.

Page 220: Advance java script for mobile with Phonegap

Privileged Method

• A Privileged Method is a function that has access to secret information.

• A Privileged Method has access to private variables and private methods.

• A Privileged Method obtains its secret information through closure.

Page 221: Advance java script for mobile with Phonegap

Power Constructor

• Put the singleton module pattern in constructor function, and we have a power constructor pattern.

1. Make a new object somehow.

2. Augment it.

3. Return it.

Page 222: Advance java script for mobile with Phonegap

Power Constructor

function powerConstructor() {

var that = object(oldObject),

privateVariable;

function privateFunction(x) { ... }

that.firstMethod = function (a, b) {

...privateVariable...

};

that.secondMethod = function (c) {

...privateFunction()...

};

return that;

}

Page 223: Advance java script for mobile with Phonegap

Power Constructor

• Public methods (from the prototype)

– var that = object(oldObject);

• Private variables (var)

• Private methods (inner functions)

• Privileged methods

• No need to use new

– myObject = power_constructor();

Page 224: Advance java script for mobile with Phonegap

Parasitic Inheritance

• A power constructor calls another constructor, takes the result, augments it, and returns it as though it did all the work.

Page 225: Advance java script for mobile with Phonegap

Psudeoclassical Inheritance

function Gizmo(id) {

this.id = id;

}

Gizmo.prototype.toString = function () {

return "gizmo " + this.id;

};

function Hoozit(id) {

this.id = id;

}

Hoozit.prototype = new Gizmo();

Hoozit.prototype.test = function (id) {

return this.id === id;

}

Page 226: Advance java script for mobile with Phonegap

Parasitic Inheritance function gizmo(id) {

return {

id: id,

toString: function () {

return "gizmo " + this.id;

}

};

}

function hoozit(id) {

var that = gizmo(id);

that.test = function (testid) {

return testid === this.id;

};

return that;

}

Page 227: Advance java script for mobile with Phonegap

Secrets function gizmo(id) {

return {

toString: function () {

return "gizmo " + id;

}

};

}

function hoozit(id) {

var that = gizmo(id);

that.test = function (testid) {

return testid === id;

};

return that;

}

Page 228: Advance java script for mobile with Phonegap

Shared Secrets function gizmo(id, secret) {

secret = secret || {};

secret.id = id;

return {

toString: function () {

return "gizmo " + secret.id;

};

};

}

function hoozit(id) {

var secret = {},

that = gizmo(id, secret);

that.test = function (testid) {

return testid === secret.id;

};

return that;

}

Page 229: Advance java script for mobile with Phonegap

Super Methods

function hoozit(id) {

var secret = {},

that = gizmo(id, secret),

super_toString = that.toString;

that.test = function (testid) {

return testid === secret.id;

};

that.toString = function () {

return super_toString.apply(that, []);

};

return that;

}

Page 230: Advance java script for mobile with Phonegap

Inheritance Patterns

• Prototypal Inheritance works really well with public methods.

• Parasitic Inheritance works really well with privileged and private and public methods.

• Pseudoclassical Inheritance for elderly programmers who are old and set in their ways.

Page 231: Advance java script for mobile with Phonegap

Working with the Grain

• Pseudoclassical patterns are less effective than prototypal patterns or parasitic patterns.

• Formal classes are not needed for reuse or extension.

• Be shallow. Deep hierarchies are not effective.

Page 232: Advance java script for mobile with Phonegap

Performance

• Provide a good experience.

• Be respectful of our customer's time.

• Hoare's Dictum: Premature optimization is the root of all evil.

Page 233: Advance java script for mobile with Phonegap

Efficiency

• The first priority must always be correctness.

• Optimize when necessary.

• Consider algorithmic improvements

– O (n) v O (n log n) v O (n2)

• Watch for limits.

Page 234: Advance java script for mobile with Phonegap

JavaScript Browser

Page 235: Advance java script for mobile with Phonegap

JavaScript Browser Detection

• The Navigator object contains information about the visitor's browser.

Page 236: Advance java script for mobile with Phonegap

Browser Detection

• Sometimes it can be useful to detect the visitor's browser, and then serve the appropriate information.

• The Navigator object contains information about the visitor's browser name, version, and more.

• Note: There is no public standard that applies to the navigator object, but all major browsers support it.

Page 237: Advance java script for mobile with Phonegap

The Navigator Object

• The Navigator object contains all information about the visitor's browser: <html> <body> <div id="example"></div> <script type="text/javascript"> txt = "<p>Browser CodeName: " + navigator.appCodeName + "</p>"; txt+= "<p>Browser Name: " + navigator.appName + "</p>"; txt+= "<p>Browser Version: " + navigator.appVersion + "</p>"; txt+= "<p>Cookies Enabled: " + navigator.cookieEnabled + "</p>"; txt+= "<p>Platform: " + navigator.platform + "</p>"; txt+= "<p>User-agent header: " + navigator.userAgent + "</p>"; document.getElementById("example").innerHTML=txt; </script> </body> </html>

Page 238: Advance java script for mobile with Phonegap

The Navigator Object

• The Navigator object contains all information about the visitor's browser: <html> <body> <div id="example"></div> <script type="text/javascript"> txt = "<p>Browser CodeName: " + navigator.appCodeName + "</p>"; txt+= "<p>Browser Name: " + navigator.appName + "</p>"; txt+= "<p>Browser Version: " + navigator.appVersion + "</p>"; txt+= "<p>Cookies Enabled: " + navigator.cookieEnabled + "</p>"; txt+= "<p>Platform: " + navigator.platform + "</p>"; txt+= "<p>User-agent header: " + navigator.userAgent + "</p>"; document.getElementById("example").innerHTML=txt; </script> </body> </html>

Page 239: Advance java script for mobile with Phonegap

JavaScript Cookies

• A cookie is often used to identify a user.

Page 240: Advance java script for mobile with Phonegap

What is a Cookie?

• A cookie is a variable that is stored on the visitor's computer. Each time the same computer requests a page with a browser, it will send the cookie too. With JavaScript, you can both create and retrieve cookie values.

Page 241: Advance java script for mobile with Phonegap

Example of Cookie

Examples of cookies: • Name cookie - The first time a visitor arrives to your web

page, he or she must fill in her/his name. The name is then stored in a cookie. Next time the visitor arrives at your page, he or she could get a welcome message like "Welcome John Doe!" The name is retrieved from the stored cookie

• Date cookie - The first time a visitor arrives to your web page, the current date is stored in a cookie. Next time the visitor arrives at your page, he or she could get a message like "Your last visit was on Tuesday August 11, 2005!" The date is retrieved from the stored cookie

Page 242: Advance java script for mobile with Phonegap

Create and Store a Cookie

• In this example we will create a cookie that stores the name of a visitor.

• The first time a visitor arrives to the web page, he or she will be asked to fill in her/his name.

• The name is then stored in a cookie.

• The next time the visitor arrives at the same page, he or she will get welcome message.

Page 243: Advance java script for mobile with Phonegap

Create and Store a Cookie

• First, we create a function that stores the name of the visitor in a cookie variable:

function setCookie(c_name,value,exdays) { var exdate=new Date(); exdate.setDate(exdate.getDate() + exdays); var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString()); document.cookie=c_name + "=" + c_value; }

The parameters of the function above hold the name of the cookie, the value of the cookie, and the number of days until the cookie expires

Page 244: Advance java script for mobile with Phonegap

Create and Store a Cookie

• In the function above we first convert the number of days to a valid date, then we add the number of days until the cookie should expire.

• After that we store the cookie name, cookie value and the expiration date in the document.cookie object.

• Then, we create another function that returns a specified cookie:

Page 245: Advance java script for mobile with Phonegap

Create and Store a Cookie

• function getCookie(c_name) { var i,x,y,ARRcookies=document.cookie.split(";"); for (i=0;i<ARRcookies.length;i++) { x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("=")); y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1); x=x.replace(/^\s+|\s+$/g,""); if (x==c_name) { return unescape(y); } } }

• The function above makes an array to retrieve cookie names and values, then it checks if the specified cookie exists, and returns the cookie value.

Page 246: Advance java script for mobile with Phonegap

Create and Store a Cookie

• Last, we create the function that displays a welcome message if the cookie is set, and if the cookie is not set it will display a prompt box, asking for the name of the user, and stores the username cookie for 365 days, by calling the setCookie function:

function checkCookie()

{ var username=getCookie("username"); if (username!=null && username!="") { alert("Welcome again " + username); } else { username=prompt("Please enter your name:",""); if (username!=null && username!="") { setCookie("username",username,365); } } }

Below is the full example

Page 247: Advance java script for mobile with Phonegap

<html> <head> <script type="text/javascript"> function getCookie(c_name) { var i,x,y,ARRcookies=document.cookie.split(";"); for (i=0;i<ARRcookies.length;i++) { x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("=")); y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1); x=x.replace(/^\s+|\s+$/g,""); if (x==c_name) { return unescape(y); } } } function setCookie(c_name,value,exdays) { var exdate=new Date(); exdate.setDate(exdate.getDate() + exdays); var c_value=escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString()); document.cookie=c_name + "=" + c_value; } function checkCookie() { var username=getCookie("username"); if (username!=null && username!="") { alert("Welcome again " + username); } else { username=prompt("Please enter your name:",""); if (username!=null && username!="") { setCookie("username",username,365); } } } </script> </head> <body onload="checkCookie()"> </body> </html>

Page 248: Advance java script for mobile with Phonegap

Validation

Page 249: Advance java script for mobile with Phonegap

JavaScript Form Validation

JavaScript can be used to validate data in HTML forms before sending off the content to a server.

Form data that typically are checked by a JavaScript could be: – has the user left required fields empty?

– has the user entered a valid e-mail address?

– has the user entered a valid date?

– has the user entered text in a numeric field?

Page 250: Advance java script for mobile with Phonegap

Required Fields

• The function below checks if a field has been left empty.

• If the field is blank, an alert box alerts a message, the function returns false, and the form will not be submitted:

function validateForm() { var x=document.forms["myForm"]["fname"].value; if (x==null || x=="") { alert("First name must be filled out"); return false; } }

Page 251: Advance java script for mobile with Phonegap

Required Fields

• The function above could be called when a form is submitted: <html> <head> <script type="text/javascript"> //Above function should be here. </script> </head> <body>

<form name="myForm" action="demo_form.asp" onsubmit="return validateForm()" method="post"> First name: <input type="text" name="fname"> <input type="submit" value="Submit">

</form>

</body> </html> ubmitted:

Page 252: Advance java script for mobile with Phonegap

E-mail Validation

• The function below checks if the content has the general syntax of an email.

• This means that the input data must contain an @ sign and at least one dot (.). Also, the @ must not be the first character of the email address, and the last dot must be present after the @ sign, and minimum 2 characters before the end:

Page 253: Advance java script for mobile with Phonegap

E-mail Validation

function validateForm() { var x=document.forms["myForm"]["email"].value; var atpos=x.indexOf("@"); var dotpos=x.lastIndexOf("."); if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length) { alert("Not a valid e-mail address"); return false; } }

Page 254: Advance java script for mobile with Phonegap

<html> <head> <script type="text/javascript"> function validateForm() { var x=document.forms["myForm"]["email"].value; var atpos=x.indexOf("@"); var dotpos=x.lastIndexOf("."); if (atpos<1 || dotpos<atpos+2 || dotpos+2>=x.length) { alert("Not a valid e-mail address"); return false; } } </script> </head> <body> <form name="myForm" action="demo_form.asp" onsubmit="return validateForm();" method="post"> Email: <input type="text" name="email"> <input type="submit" value="Submit"> </form> </body> </html>

Page 255: Advance java script for mobile with Phonegap

JavaScript Timing Events

• With JavaScript, it is possible to execute some code after a specified time-interval. This is called timing events.

• It's very easy to time events in JavaScript. The two key methods that are used are:

• setTimeout() - executes a code some time in the future

• clearTimeout() - cancels the setTimeout()

Page 256: Advance java script for mobile with Phonegap

The setTimeout() Method

• var t=setTimeout("javascript statement",milliseconds);

• The setTimeout() method returns a value. • In the syntax defined above, the value is stored in

a variable called t. • If you want to cancel the setTimeout() function,

you can refer to it using the variable name. • The first parameter of setTimeout() can be a

string of executable code, or a call to a function. • The second parameter indicates how many

milliseconds from now you want to execute the first parameter.

Page 257: Advance java script for mobile with Phonegap

The setTimeout() Method

<html> <head> <script type="text/javascript"> function timeMsg() { var t=setTimeout("alertMsg()",3000); } function alertMsg() { alert("Hello"); } </script> </head> <body> <form> <input type="button" value="Display alert box in 3 seconds" onClick="timeMsg()" /> </form> </body> </html> Note - There are 3 seconds in one second.

Page 258: Advance java script for mobile with Phonegap

The setTimeout() Method Infinite Loop

<html> <head> <script type="text/javascript"> var c=0; var t; var timer_is_on=0; function timedCount() { document.getElementById('txt').value=c; c=c+1; t=setTimeout("timedCount()",1000); } function doTimer() { if (!timer_is_on) { timer_is_on=1; timedCount(); } } </script> </head> <body> <form> <input type="button" value="Start count!" onclick="doTimer()"> <input type="text" id="txt" /> </form> </body>

</html>

Page 259: Advance java script for mobile with Phonegap

The clearTimeout() Method <html> <head> <script type="text/javascript"> var c=0; var t; var timer_is_on=0; function timedCount() { document.getElementById('txt').value=c; c=c+1; t=setTimeout("timedCount()",1000); } function doTimer() { if (!timer_is_on) { timer_is_on=1; timedCount(); } } function stopCount() { clearTimeout(t); timer_is_on=0; } </script> </head> <body> <form> <input type="button" value="Start count!" onclick="doTimer()" /> <input type="text" id="txt" /> <input type="button" value="Stop count!" onclick="stopCount()" /> </form> <p> Click on the "Start count!" button above to start the timer. The input field will count forever, starting at 0. Click on the "Stop count!" button to stop the counting. Click on the "Start count!" button

to start the timer again. </p> </body> </html>

Page 260: Advance java script for mobile with Phonegap

JavaScript Create Your Own Objects

• Objects are useful to organize information. <html> <body> <script type="text/javascript"> personObj={firstname:"John",lastname:"Doe",age:50,eyecolor:"blue"} document.write(personObj.firstname + " is " + personObj.age + " years old."); </script> </body> </html>

Page 261: Advance java script for mobile with Phonegap

JavaScript Create Your Own Objects

<html> <body> <script type="text/javascript"> function person(firstname,lastname,age,eyecolor) { this.firstname=firstname; this.lastname=lastname; this.age=age; this.eyecolor=eyecolor; } myFather=new person("John","Doe",50,"blue"); document.write(myFather.firstname + " is " + myFather.age + " years old."); </script> </body> </html>

Page 262: Advance java script for mobile with Phonegap

JavaScript Objects

• Earlier in this tutorial we have seen that JavaScript has several built-in objects, like String, Date, Array, and more.

• In addition to these built-in objects, you can also create your own.

• An object is just a special kind of data, with a collection of properties and methods.

Page 263: Advance java script for mobile with Phonegap

JavaScript Objects Properties

• The syntax for accessing a property of an object is:

• You can add properties to an object by simply giving it a value.

• Assume that the personObj already exists - you can give it properties named firstname, lastname, age, and eyecolor as follows:

personObj.firstname="John";

personObj.lastname="Doe";

personObj.age=30;

personObj.eyecolor="blue";

document.write(personObj.firstname);

Result - John

Page 264: Advance java script for mobile with Phonegap

Object Methods

• n object can also contain methods.

• You can call a method with the following syntax:

• objName.methodName()

• Parameters required for the method can be passed between the parentheses.

• To call a method called sleep() for the personObj:

• personObj.sleep();

Page 265: Advance java script for mobile with Phonegap

Creating Your Own Objects

• There are different ways to create a new object:

1. Create a direct instance of an object

• The following code creates a new instance of an object, and adds four properties to it:

personObj=new Object(); personObj.firstname="John"; personObj.lastname="Doe"; personObj.age=50; personObj.eyecolor="blue"

Page 266: Advance java script for mobile with Phonegap

Creating Your Own Objects

• alternative syntax (using object literals): • personObj={firstname:"John",lastname:"Doe",age:50,eyecolor:"blue"};

• Adding a method to the personObj is also simple.

• The following code adds a method called eat() to the personObj:

• personObj.eat=eat;

Page 267: Advance java script for mobile with Phonegap

Creating Your Own Objects

2. Create an object constructor

• Create a function that construct objects: function person(firstname,lastname,age,eyecolor)

{ this.firstname=firstname; this.lastname=lastname; this.age=age; this.eyecolor=eyecolor; }

var myFather=new person("John","Doe",50,"blue");

var myMother=new person("Saly","Raly",48,"gren");

Page 268: Advance java script for mobile with Phonegap

Creating Your Own Objects

2. Create an object constructor

• Create a function that construct objects: function person(firstname,lastname,age,eyecolor)

{ this.firstname=firstname; this.lastname=lastname; this.age=age; this.eyecolor=eyecolor; }

var myFather=new person("John","Doe",50,"blue");

var myMother=new person("Saly","Raly",48,"gren");

Page 269: Advance java script for mobile with Phonegap

Overview of DOM

Page 270: Advance java script for mobile with Phonegap

What is the DOM?

• The DOM is a W3C (World Wide Web Consortium) standard.

• The DOM defines a standard for accessing documents:

Page 271: Advance java script for mobile with Phonegap

What is the DOM?

The W3C DOM standard is separated into 3 different parts:

– Core DOM - standard model for all document types

– XML DOM - standard model for XML documents

– HTML DOM - standard model for HTML documents

Page 272: Advance java script for mobile with Phonegap

What is the HTML DOM?

The HTML DOM is a standard object model and programming interface for HTML. It defines:

– The HTML elements as objects

– The properties of all HTML elements

– The methods to access all HTML elements

– The events for all HTML elements

Page 273: Advance java script for mobile with Phonegap

Overview of DOM

• Every web page resides inside a browser window which can be considered as an object.

• A Document object represents the HTML document that is displayed in that window.

• The Document object has various properties that refer to other objects which allow access to and modification of document content.

Page 274: Advance java script for mobile with Phonegap

Overview of DOM

• The way that document content is accessed and modified is called the Document Object Model, or DOM.

• The Objects are organized in a hierarchy.

• This hierarchical structure applies to the organization of objects in a Web document.

Page 275: Advance java script for mobile with Phonegap

Overview of DOM

• Window object: Top of the hierarchy. It is the outmost element of the object hierarchy.

• Document object: Each HTML document that gets loaded into a window becomes a document object. The document contains the content of the page.

• Form object: Everything enclosed in the <form>...</form> tags sets the form object.

• Form control elements: The form object contains all the elements defined for that object such as text fields, buttons, radio buttons, and checkboxes.

Page 276: Advance java script for mobile with Phonegap

Overview of DOM

Page 277: Advance java script for mobile with Phonegap

Overview of DOM

• There are several DOMs in existence.

• The following sections explain each of these DOMs in detail and describe how you can use them to access and modify document content

Page 278: Advance java script for mobile with Phonegap

Overview of DOM

• The Legacy DOM: This is the model which was introduced in early versions of JavaScript language.

• It is well supported by all browsers, but allows access only to certain key portions of documents, such as forms, form elements, and images.

Page 279: Advance java script for mobile with Phonegap

Overview of DOM

• The W3C DOM: This document object model allows access and modification of all document content and is standardized by the World Wide Web Consortium (W3C). This model is supported by almost all the modern browsers.

Page 280: Advance java script for mobile with Phonegap

Overview of DOM

• The IE4 DOM: This document object model was introduced in Version 4 of Microsoft's Internet Explorer browser. IE 5 and later versions include support for most basic W3C DOM features.

Page 281: Advance java script for mobile with Phonegap

Overview of BOM

• There are no official standards for the Browser Object Model (BOM).

• Since modern browsers have implemented (almost) the same methods and properties for JavaScript interactivity, it is often referred to, as methods and properties of the BOM.

Page 282: Advance java script for mobile with Phonegap

The Window Object

• The window object is supported by all browsers. It represent the browser's window.

• All global JavaScript objects, functions, and variables automatically become members of the window object.

• Global variables are properties of the window object.

• Global functions are methods of the window object.

Page 283: Advance java script for mobile with Phonegap

The Window Object

• Even the document object (of the HTML DOM) is a property of the window object:

– window.document.getElementById("header");

• is the same as:

– document.getElementById("header");

Page 284: Advance java script for mobile with Phonegap

The Window Object

• Even the document object (of the HTML DOM) is a property of the window object:

– window.document.getElementById("header");

• is the same as:

– document.getElementById("header");