<!DOCTYPE html>
<html><head> <title>demo2html</title> <meta charset="utf-8"/> <style type="text/css"> </style></head><body><script type="text/javascript"> /*创建函数和字面量函数*/ /* function add(){ alert("函数创建成功") }; var testfunction=function(){ alert("这是一个匿名函数"); }; add(); //调用函数 testfunction();//调用字面量函数 */ /* var testobj=new Object(); //创建对象 testobj.run=function(){ //给对象创建方法 alert("这是对象内部的方法"); }; testobj.run(); //调用对象的方法 */ /*创建函数对象*/ /* function ball(){ } ball.name1="testing"; //给函数对象创建属性 alert(ball.name1); //访问函数属性 alert(typeof ball) */ /*函数的引用*/ /* function myFunction(message){ alert(message); } var ptr=myFunction; //将函数的引用传递给变量 ptr("Testing"); //变量调用函数 */ /*将函数的引用传递给对象*/ /* function sayName(name1){ alert(name1); } var obj1=new Object(); var obj2=new Object(); var obj3=new Object(); obj1.sayMyName=sayName; //将引用传递给对象的变量,形成对象的方法 obj2.sayMyName=sayName; obj3.sayMyName=sayName; obj1.sayMyName("张三") //调用对象的方法 obj2.sayMyName("李四"); obj3.sayMyName("王五") */ /* function add(){ } add.message="chaiyesong" var ptr1=add; var ptr2=add; alert(ptr1.message); alert(ptr2.message) add.message="123"; alert(ptr1.message) alert(ptr2.message) */ /*引用指向另一个变量*/ /* function add(){ alert("one"); } var ptr=add; ptr=function(){ //创建了另一个叫做myFunctionPtr的函数而不是修改它 alert("ptr") } add=function(){ //引用指向了另一个函数,修改了函数的引用 alert("two") } add() ptr() */ /*创建函数对象*/ /* function Ball(message){ alert(message) } var ball0=new Ball("testing") ball0.name1="ball-0" alert(ball0.name1) function Ball(message){ alert(message) } var ball0=new Object() ball0.constuct=Ball; //将函数的引用指向了一个对象的构造器 ball0.constuct("ceshiceshiceshi") //由这个对象的构造器执行此函数 ball0.name1="tesing" alert(ball0.name1) function Test(){ } alert(Test.prototype) //共享属性 */ /*添加共享属性*/ /* function Fish(naem1,color1){ this.name1=naem1 this.color1=color1 } Fish.prototype.LivesIn="water" //添加共享属性 Fish.prototype.price=20 var fish1=new Fish("mackrel","gray") var fish2=new Fish("goldfish","orange"); var fish3=new Fish("salmon", "white"); for (var i=1; i<=3; i++) { var fish=eval("fish"+i); // 我只是取得指向这条鱼的指针 alert(fish.name1+","+fish.color1+","+fish.LivesIn+","+fish.price); } */ /* function Employee(name, salary) { this.name=name; this.salary=salary; } Employee.prototype.getSalary=function getSalaryFunction() { return this.salary; } Employee.prototype.addSalary=function addSalaryFunction(addition) { this.salary=this.salary+addition; } var boss1=new Employee("Joan", 200000); var boss2=new Employee("Kim", 100000); var boss3=new Employee("Sam", 150000); alert(boss1.getSalary()); // 输出 200000 alert(boss2.getSalary()); // 输出 100000 alert(boss3.getSalary()); // 输出 150000 */ /*匿名函数*/ /* (function(x,y){ alert(x+y) })(2,3)//这个函数自我执行的能力 */ /*执行并且调用函数*/ /* var f1=function(){ return "testing" } alert(f1()) */ /*将自我执行的结果给变量*/ /* var f2=function(){ return "ok" }() alert(f2) */ // ( // function(){ // alert("fa") // }() // ) /* function box(){ var user='Tt' return function(){ return user; } } alert(box()()) //调用内嵌函数 */ // var b=box() // alert(b()) /*通过闭包函数实行自动加*/ /* function box(){ var age=100 return function(){ //调用的其实是这个方法,实现了数据在内存中驻留的时间 age++ return age; } } var b=box() alert(b()) alert(b()) alert(b()) */ /*开始版*/ /* function box(){ var arr=[] //申明一个数组 for (var i = 0; i <5; i++) { arr[i]=function(){ //通过循环只是把函数赋值给了每个元素 return i; } } return arr; //返回一个数组 } var b=box() //把返回的数组赋值给b document.writeln("数组的长度为:"+b.length+"<br />") //返回数组的长度 for (var i = 0; i < b.length; i++) { document.writeln("匿名函数返回的值为:"+b[i]()+"<br />") //执行此函数每个元素的值是5,因为最后一个元素的值为5 }; */ /*改进版*/ /* function box1() { var arr1 = []; for (var i = 0; i < 5; i++) { arr1[i] = (function (num) { //自我执行,把函数自我执行的结果赋值给了每个元素 return num; })(i); //并且传参 } return arr1; } var b1 = box1(); //返回时数组 for (var i = 0; i < b1.length; i++) { document.writeln("改进后 输出的结果为:") document.writeln(b1[i]+"<br />"); //这里返回的是数组,直接打印即可 } */ //测试版 /* var testarr=[]; for (var i = 0; i < 5; i++) { testarr[i]=function(){ return i; } }; document.writeln("测试板的长度为:"+testarr.length+"<br >") for (var i = 0; i < testarr.length; i++) { document.writeln("测试版第"+(i+1)+"次"+testarr[i]+"<br />") }; var aa=function(){ return 3 } document.writeln("测试版测试的结果"+aa) */ /*改进版3*/ /* function box3() { var arr3= []; for (var i = 0; i < 5; i++) { arr3[i] = (function (num) { return function () { return num; } })(i);//自我执行的结果赋值给每个元素,执行完了,将其执行的结果赋值给了每个元素 } return arr3; } var b3= box3(); for (var i = 0; i < b3.length; i++) { document.writeln(b3[i]()+"<br />"); } */ /*js函数教程地址://http://www.cnblogs.com/ttcc/p/3763437.html*/ /*闭包中的this指定的对象是window*/ /* var user='The Window00'; var obj={ user:'The Window001', getUserFunction:function(){ return function(){ return this.user; } } } document.writeln("返回this指定的对象"+obj.getUserFunction()()) */ // function box(count1){ // var i=12; // for (var i = 0; i < count1; i++) { // document.writeln(i); // } // } // var i=10 // box(2) /*闭包执行完毕,立马清除内存数据*/ /* function box(count) { (function () { for (var i = 0; i<count; i++){ } })(); document.writeln(i); //报错,无法访问 } box(2); */ /*通过闭包访问隐私属性*/ /* function Box() { var age = 100; //私有变量 function run() { //私有函数 return '运行中...'; } this.get = function () { //对外公共的特权方法 return age + run(); }; } var box = new Box(); alert(box.get()); function Person(value) { var user = value; //这句可以省略 this.getUser = function () { return user; }; this.setUser = function (value) { user = value; }; } */ /*单例模式*/ /* var box = function () { var user = 'TT'; //私有变量 function run() { //私有函数 return '运行中...'; } return { publicGo : function () { //对外公共接口的特权方法 return user + run(); } }; }(); alert(box.publicGo()); */ /*单例模式*/ /* function Desk() { //定义了一个函数 } var box = function () { var user = 'TT'; //私有变量 function run() { //私有函数 return '运行中...'; } var desk = new Desk(); //实例化自定义对象 desk.publicGo = function () { return user + run(); //给自定义函数定义方法 }; return desk; }(); alert(box.publicGo()); */</script></body></html>