Javascript之闭包
来源:互联网 发布:mp4视频字幕合并 mac 编辑:程序博客网 时间:2024/05/18 03:05
**闭包**<script type="text/javascript"> /* 闭包: 1.函数里面的函数 2.在外函数内部能调用外函数局部变量的函数 作用域: 全局作用域:页面 局部作用域:方法中 全局变量:1.在函数外部定义 2.不用var修饰的变量 局部变量 */ var a = 20;//全局变量 function fun(){ var c = 100;//局部变量 b = 30;//全局变量 b++; alert(a++); } fun();// alert(a);// alert(b);// alert(c);//弹不出来,undefined,被销毁了 //闭包 var num = 100; function func(){ var num2 = 100; //对外提供的公共方法(setter方法) method = function(){ num+=1; } //闭包:确保局部变量在函数执行完毕还存在于内存中 //public方法 var method2 = function(){//闭包 // alert(num2); alert("hello"); } return method2; }// func()();//调用内部函数 var result = func(); method(); result();</script>**递归**<script type="text/javascript"> //递归:函数自身调用自身 入口 出口 //累加 function fun(n){ if(n==0){ return 0; } return n+fun(n-1); } alert("所求之和为:"+fun(100)); //斐波数列 function func(n){ if(n==1|n==2){ return 1; }else{ return func(n-2)+func(n-1); } } alert("所求之数为:"+func(6));</script>**修改指针指向**<script type="text/javascript">/* 指针:函数调用者对象*/ function fun(){ alert(this); } fun();//this代表调用该函数的对象---window //修改指针:改变调用函数对象 //需求:将fun1的调用指针改变为fun2 function fun1(){ alert(a+b); alert(this); } function fun2(){ alert(a+b); } fun1.call(fun2,20,30);//输出来是fun2的对象==说明指针指向fun2 fun1.apply(fun2,[20,30]); //简单模拟继承 function Person(name,sex){ this.name = name; this.sex = sex; this.speak = function(){ alert(this.name); } } function Chinese(name,sex,age){ this.name = name; this.sex = sex; this.age = age; } var person = new Person("张三","男"); var ch = new Chinese("李四","女 "); person.speak.call(ch,"张三","男"); ch.speak;</script>**arguments**<script type="text/javascript"> function fun(a,b,c){ for(var i = 0;i<arguments.length;i++){ alert(arguments[i]); } alert(arguments.callee);//返回当前执行的函数对象 func(); } fun(1,2,3); function func(){ alert(func.caller);//返回调用函数的函数对象 }// func();</script>**prototype**<script type="text/javascript"> function Animal(name,age){ this.name = name; this.age = age; this.eat = function(){ alert(this.name + "is eatting..."); } this.bite = function(){ alert(this.name+"---"+this.age); } /* 1.可以给函数添加额外的方法或属性 2.可以类似于重写函数的方法 */ //在函数内定义方法时有重名的,使用原型定义时,仍然以非原型为主 Animal.prototype.bite = function(){ alert(this.name+"can bite..."); } } //在函数外添加方法 Animal.prototype.out = function(){ alert(this.name+"---is gettng out"); } Animal.prototype.sex = "雄性"; var animal = new Animal("阿黄",20); animal.eat(); animal.bite(); animal.out(); alert(animal.sex);</script>
0 0
- javascript 之 闭包
- JavaScript之闭包
- JavaScript 之 闭包
- JavaScript之闭包
- javascript之闭包
- javascript之闭包
- javascript之闭包
- javascript之闭包
- JavaScript之闭包
- JavaScript之闭包
- JavaScript之闭包
- JavaScript之闭包
- Javascript之闭包
- JavaScript之闭包
- JavaScript之闭包
- JavaScript之闭包
- JavaScript之闭包
- JavaScript之闭包
- GBDC2017全球大数据峰会
- PHP——全局变量
- poj 1995 Raising Modulo Numbers 快速幂典型例题
- 私有构造函数
- Native项目迁入React-Native过程中遇到的坑(0.4x版本)
- Javascript之闭包
- Flex实例篇
- ubuntu 改变终端提示符
- java 生产者消费者模式
- python-opencv实现切变换,不裁减图片
- 全栈工程师不是一个人的单打独斗
- Could not initialize class sun.security.provider.SecureRandom$Seeder
- 1.3 设计一个有getMin功能的栈
- django如何实现文件的上传,修改,删除,展示(02)