首页 > 代码库 > javascript——闭包
javascript——闭包
1 <script type="text/javascript"> 2 //什么是闭包: 3 //是指语法域位于某个特定的区域,具有持续参照(读写)位于该区域内自身范围之外的执行域上的非持久型变量值能力的段落。 4 //这些外部执行域的非持久型变量神奇地保留它们在闭包最初定义(或创建)时的值(深连结)。 5 //简单来说,闭包就是在另一个作用域中保存了一份它从上一级函数或作用域取得的变量(键值对), 6 //而这些键值对是不会随上一级函数的执行完成而销毁。 7 //周爱民说得更清楚, 8 // 闭包就是“属性表”, 9 // 闭包就是一个数据块,10 // 闭包就是一个存放着“Name=Value”的对照表。11 // 就这么简单。但是,必须强调,闭包是一个运行期概念。12 13 14 with (obj) {15 //这里是对象闭包16 }17 (function () {18 //函数闭包19 })()20 try {21 //...22 } catch (e) {23 //catch闭包 但IE里不行24 }25 26 function User(properties) {27 var _self = this;28 for (var i in properties) {29 (function () {30 //在闭包内,t每次都是新的,而properties[i]是for里面的31 var t = properties[i];32 _self["get" + i.toLocaleLowerCase()] = function () {33 return t;34 }35 _self["set" + i.toLocaleLowerCase()] = function (val) {36 t = val;37 }38 })();39 }40 }41 42 var a = (function (n) {43 debugger;44 if (n < 1) {45 alert("invalid arguments");46 return 0;47 }48 if (n == 1) {49 return 1;50 }51 else {52 return (n * arguments.callee(n - 1));53 }54 })(4);55 56 document.writeln(a);57 58 var user1 = new User({59 name: "张三",60 age: 2261 });62 63 alert(user1.getname());64 alert(user1.getage());65 66 user1.setname("李四");67 user1.setage(25);68 69 alert(user1.getname());70 alert(user1.getage());71 </script>
javascript——闭包
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。