3 * These samples were retrieved from this website:
\r
4 * http://www.permadi.com/tutorial/jsFunc/
\r
6 * This the output you should see from running:
\r
7 * ctags -f - Test/jsFunc_tutorial.js
\r
24 * getHalfOf7.calculate
\r
26 * getSalaryFunctionDT9
\r
49 * addSalaryFunctionDT9
\r
68 alert(D1(1,2)); // produces 3
\r
70 var my_global_var1 = 'global';
\r
74 var D2=function(a, b)
\r
78 alert(D2(1,2)); // produces 3
\r
83 var D2A=function theAdd(a, b)
\r
87 alert(D2A(1,2)); // produces 3
\r
88 alert(theAdd(1,2)); // also produces 3
\r
90 var myObject=new Object();
\r
91 myObject.add=function(a,b){return a+b};
\r
92 // myObject now has a property/a method named "add"
\r
93 // and I can use it like below
\r
99 var D3=new Function("a", "b", "return a+b;");
\r
100 alert(D3(3,4)); // produces 7
\r
105 var D4=new Function("a", "b",
\r
106 // separate string using "\"
\r
107 "('adding '+a+' and ' +b);\
\r
109 alert(D4(3,4)); // produces 7
\r
114 function D5(myOperator)
\r
116 return new Function("a", "b", "return a" + myOperator + "b;");
\r
119 var add=D5("+"); // creates "add" function
\r
120 var subtract=D5("-"); // creates "subtract" function
\r
121 var multiply=D5("*"); // created "multiply" function
\r
123 // test the functions
\r
124 alert("result of add="+add(10,2)); // result is 12
\r
125 alert("result of substract="+subtract(10,2)); // result is 8
\r
126 alert("result of multiply="+multiply(10,2)); // result is 20
\r
132 function Ball1() // it may seem odd, but this declaration
\r
133 { // creates a object named Ball
\r
136 alert(typeof Ball1); // produces "function"
\r
141 function Ball3() // it may seem odd, but declaration
\r
142 { // creates an object named Ball, and you can
\r
143 } // refer to it or add properties to it like below
\r
144 Ball3.callsign="The Ball"; // add property to Ball
\r
145 alert(Ball3.callsign); // produces "The Ball"
\r
150 function myFunction4(message)
\r
154 var ptr=myFunction4; // ptr points to myFunction
\r
155 ptr("hello"); // executes myFunction which will prints "hello"
\r
160 function sayName4A(name)
\r
165 var object1=new Object(); // creates 3 objects
\r
166 var object2=new Object();
\r
167 var object3=new Object();
\r
168 object1.sayMyName4A=sayName; // assign the function to all objects
\r
169 object2.sayMyName4A=sayName;
\r
170 object3.sayMyName4A=sayName;
\r
172 object1.sayMyName4A("object1"); // prints "object1"
\r
173 object2.sayMyName4A("object2"); // prints "object2"
\r
174 object3.sayMyName4A("object3"); // prints "object3"
\r
179 function myFunction5()
\r
181 alert(myFunction.message);
\r
183 myFunction5.message="old";
\r
184 var ptr1=myFunction5; // ptr1 points to myFunction
\r
185 var ptr2=myFunction5; // ptr2 also points to myFunction
\r
187 ptr1(); // prints "old"
\r
188 ptr2(); // prints "old"
\r
190 myFunction5.message="new";
\r
192 ptr1(); // prints "new"
\r
193 ptr2(); // prints "new"
\r
198 function myFunction6()
\r
202 myFunction6(); // prints "Old"
\r
204 myFunction6E=function()
\r
208 myFunction6E(); // prints "New"
\r
213 function myFunction6A()
\r
217 var savedFunction=myFunction6A;
\r
219 myFunction6AE=function()
\r
223 myFunction6AE(); // prints "New"
\r
224 savedFunction(); // printf "Old"
\r
228 function myFunction6B()
\r
232 var savedFunc=myFunction6B;
\r
233 savedFunc6B=function()
\r
237 myFunction6B(); // prints "Old"
\r
238 savedFunc6B(); // prints "New"
\r
242 function getHalfOf7(num1, num2, num3)
\r
244 function calculate(number)
\r
250 result+=calculate(num1)+" ";
\r
251 result+=calculate(num2)+" ";
\r
252 result+=calculate(num3);
\r
254 var resultString=getHalfOf7(10,20,30);
\r
255 alert(resultString); // prints "5 10 15"
\r
259 function calculate8(number)
\r
264 function getHalfOf8(num1, num2, num3)
\r
266 function calculate(number)
\r
272 result+=calculate(num1)+" ";
\r
273 result+=calculate(num2)+" ";
\r
274 result+=calculate(num3);
\r
276 var resultString=getHalfOf8(10,20,30);
\r
277 alert(resultString); // prints "5 10 15"
\r
283 var ball0=new DT1(); // ball0 now points to a new object
\r
285 alert(ball0); // prints "Object" because ball0 is now an Object
\r
290 function DT2(message)
\r
294 var ball1=new DT2("creating new Ball"); // creates object &
\r
295 // prints the message
\r
296 ball1.name="ball-1"; // ball0 now has a "name" property
\r
297 alert(ball1.name); // prints "ball-0"
\r
302 function DT2A(message)
\r
306 var ball2=new Object();
\r
307 ball2.construct=DT2A;
\r
308 ball2.construct("creating new ball2"); // executes ball0.Ball("creating..");
\r
309 ball2.name="ball-2";
\r
310 alert(ball2.name);
\r
313 // Example DT3 (creates 3 ball objects)
\r
318 var ball3=new DT3(); // ball0 now points to a new instance of type Ball
\r
319 ball3.name="ball-3"; // ball0 now has a "name" property
\r
321 var ball4=new DT3();
\r
322 ball4.name="ball-4";
\r
324 var ball5=new DT3();
\r
326 alert(ball0.name); // prints "ball-0"
\r
327 alert(ball1.name); // prints "ball-1"
\r
328 alert(ball2.name); // oops, I forgot to add "name" to ball2!
\r
333 function DT4(message, specifiedName)
\r
336 this.name=specifiedName;
\r
338 var ball6=new DT4("creating new Ball", "Soccer Ball");
\r
339 alert(ball6.name); // prints "Soccer Ball"
\r
344 function DT5(color, specifiedName, owner, weight)
\r
346 this.name=specifiedName;
\r
349 this.weight=weigth;
\r
351 var ball7=new DT5("black/white", "Soccer Ball", "John", 20);
\r
352 var ball8=new DT5("gray", "Bowling Ball", "John", 30);
\r
353 var ball9=new DT5("yellow", "Golf Ball", "John", 55);
\r
354 var balloon=new DT5("red", "Balloon", "Pete", 10);
\r
356 alert(ball7.name); // prints "Soccer Ball"
\r
357 alert(balloon.name); // prints "Balloon"
\r
358 alert(ball9.weight); // prints "55"
\r
363 function DT6(name, salary, mySupervisor)
\r
366 this.salary=salary;
\r
367 this.supervisor=mySupervisor;
\r
369 var boss=new DT6("John", 200);
\r
371 var manager=new DT6("Joan", 50, boss);
\r
372 var teamLeader=new DT6("Rose", 50, boss);
\r
374 alert(manager.supervisor.name+" is the supervisor of "+manager.name);
\r
375 alert(manager.name+"\'s supervisor is "+manager.supervisor.name);
\r
380 function DT7(name, salary)
\r
383 this.salary=salary;
\r
385 this.addSalary=addSalaryFunction;
\r
387 this.getSalary=function()
\r
389 return this.salary;
\r
393 function addSalaryFunction(addition)
\r
395 this.salary=this.salary+addition;
\r
398 var boss=new DT7("John", 200000);
\r
399 boss.addSalary(10000); // boss gets 10K raise
\r
400 alert(boss.getSalary()); // print 210K
\r
404 function DT7A(name, salary)
\r
407 this.salary=salary;
\r
409 this.addSalary=addSalaryFunction;
\r
411 this.getSalary=function()
\r
413 return this.salary;
\r
417 function addSalaryFunction(addition)
\r
419 this.salary=this.salary+addition;
\r
422 var boss=new DT7A("John", 200000);
\r
423 var boss2=new DT7A("Joan", 200000);
\r
424 var boss3=new DT7A("Kim", 200000);
\r
429 function DT8(name, salary)
\r
432 this.salary=salary;
\r
434 this.addSalary=addSalaryFunction;
\r
435 this.getSalary=function()
\r
437 return this.salary;
\r
441 function addSalaryFunction(addition)
\r
443 this.salary=this.salary+addition;
\r
446 var boss1=new DT8("John", 200000);
\r
447 var boss2=new DT8("Joan", 200000);
\r
450 // add properties to getSalary function object.
\r
451 boss1.getSalary.owner="boss1";
\r
452 boss2.getSalary.owner="boss2";
\r
453 alert(boss1.getSalary.owner); // prints "boss1"
\r
454 alert(boss2.getSalary.owner); // prints "boss2"
\r
455 // if both objects are pointing to the same function object, then
\r
456 // both output above should have printed "boss2".
\r
458 // add properties to addSalary function object.
\r
459 boss1.addSalary.owner="boss1";
\r
460 boss1.addSalary.owner="boss2";
\r
461 alert(boss1.addSalary.owner); // prints "boss2"
\r
462 alert(boss2.addSalary.owner); // prints "boss2"
\r
463 // since both objects are not pointing to the same function,
\r
464 // then changes in one, affects all instances (so, both prints "boss2").
\r
469 function DT9(name, salary)
\r
472 this.salary=salary;
\r
474 this.addSalary=addSalaryFunctionDT9;
\r
475 this.getSalary=getSalaryFunctionDT9;
\r
478 function getSalaryFunctionDT9()
\r
480 return this.salary;
\r
483 function addSalaryFunctionDT9(addition)
\r
485 this.salary=this.salary+addition;
\r
494 alert(PT1.prototype); // prints "Object"
\r
499 function PT2(name, color)
\r
504 PT2.prototype.livesIn="water";
\r
505 PT2.prototype.price=20;
\r
510 function PT3(name, salary)
\r
513 this.salary=salary;
\r
516 PT3.prototype.getSalary=function getSalaryFunction()
\r
518 return this.salary;
\r
521 PT3.prototype.addSalary=function addSalaryFunction(addition)
\r
523 this.salary=this.salary+addition;
\r