Javascript闭包 ,JS中没有public,private等修饰词,里面的变量就分为globle和局部变量
Javascript中没有没有像Java中的类,但是在JS中函数扮演了双重角色,函数可以认为是一个”类“,JS中没有public,private等修饰词,里面的变量就分为globe和函数内部(用var声明,否则是globe的)在JS中的对象可以用JSON描述,如果用JSON的话,可以解决访问对象中的变量
var person = { "name" : "liuyu" , "id" : 1,
getName: function ()
{ return this .name}
};
alert(person.id)
person.say = function (x) {
this .id = x;
}
person.say(2);
alert(person.getName());
|
这种的确可以解决,没有问题,但是这个也有方便的地方,不能当做一个模板(类似类的作用,通过构造函数的参数,实例化多个对象),闭包可以说也是一种为了解决访问私有变量的一种手段。
function Person(Name, id) {
//私有变量:
var Name = Name;
var id = id;
//公共变量:
this .getName = function () {
return Name;
};
this .setID = function (x) {
id = x;
}
this .getID = function () {
return id;
}
};
|
闭包的写法可能不仅仅是这样,有的时候是将内部的这个函数作为返回结果的,如下.
function foo(x) {
var tmp = 3;
return function (y) {
alert(x + y + (++tmp));
}
}
|
闭包其实就是在一个函数内部由定义了一个函数,用这个内部函数对这个外部函数里面的私有变量进行处理,之所以能访问父类函数内部的变量,就说明了这个私有变量没有被释放。很多资料上可能这么说:
- 作为一个函数变量的一个引用 - 当函数返回时,其处于激活状态。
- 一个闭包就是当一个函数返回时,一个没有释放资源的栈区。
Javascript闭包 ,JS中没有public,private等修饰词,里面的变量就分为globle和局部变量相关推荐
- [转]JavaScript/Node.JS 中的 Promises
JavaScript Promises 初体验 Promise 是什么? Promise 对象用来进行延迟(deferred) 和 异步(asynchronous) 计算. 一个 Promise 处于 ...
- 【JavaScript】js中的原型继承
文章目录 1. 理解继承 2. js中的继承(原型继承) 3. js6种继承方式 3.1 原型链继承 3.2 盗用构造函数 3.3 组合继承 3.4 原型式继承 3.5 寄生式继承 3.6 寄生式组合 ...
- 初学JavaScript:js中的对象(对象+原型对象)
文章目录 js对象详解 1.创建对象 字面量模式创建对象 构造函数模式创建对象 2.访问对象 访问属性 访问方法 3.遍历对象中的属性和属性值 4.往对象中新添属性 5.删除对象中的属性 6.Obje ...
- [JavaScript] 探索JS中的函数秘密
函数长啥样? 把一些要重复使用的内容封装到函数内. function foo(title) {console.log(title) } foo('title') foo('dust') foo('he ...
- jsfor循环终止_【JavaScript】JS中如何跳出循环/结束遍历
直接抛结论,下表是JS中常用的实现循环遍历的方法的跳出/结束遍历的办法,经过测试后的总结.可能各位大佬还有其他的办法,我在此表示大佬NB. 序号 方法 break continue return re ...
- 一个讨论引发关于js中函数声明,函数表达式,形参与变量声明赋值引发的一些事(http://www.cnblogs.com/zhouyongtao/archive/2012/11/22/2783089)
//Firefox 17下运行结果 function a(){} undefined [function a(){}, 2, 3] ee 444 6 ========================= ...
- Smarty 中的 if 语句条件修饰词
Smarty 中的 if 语句和 php 中的 if 语句一样灵活易用,并增加了几个特性以适宜模板引擎. if 必须于 /if 成对出现. 可以使用 else 和 elseif 子句. 可以使用以下条 ...
- html eq判断相等,HTML中Smarty中的if语句条件修饰词eq相等ne、neq不相等,gt大于
Smarty 中的 if 语句和 php 中的 if 语句一样灵活易用,并增加了几个特性以适宜模板引擎. if必须于 /if 成对出现.可以使用 else 和 elseif 子句. 可以使用以下条件修 ...
- 【JavaScript】js中内存泄漏的几种情况?
文章目录 一.是什么 二.垃圾回收机制 标记清除 引用计数 小结 三.常见内存泄露情况 参考文献 一.是什么 内存泄漏(Memory leak)是在计算机科学中,由于疏忽或错误造成程序未能释放已经不再 ...
- 【JavaScript】JS中的预解析
JavaScript解析器在运行JavaScript代码的时候分为两步:预解析 和 代码执行(按顺序从上到下). 预解析:js引擎会把js里面所有的var和function提升到当前作用域的最前面. ...
最新文章
- 楼市调控要“围堵”更要“疏通”
- ITK:将内核应用于图像中的每个像素
- mediasoup-demo 运行实战
- 织梦数据库支持mysql5.7_最新织梦DEDECMS5.7数据库说明文档
- linux配置php mysql_Linux下LAMP(Apache+PHP+MySql)环境配置
- 如何做一个国产数据库(四)
- oracle 手动添加分区,如何在oracle中创建子分区?
- Mybatis JPA-集成方案+代码解析
- red_hat_enterprise_linux
- linux nodejs 502错误,node.js应用程序与nginx 502错误的网关错误
- 搜狗浏览器显示无法解析服务器的DNS地址,搜狗浏览器显示无法解析DNS地址的解决方法...
- 移动交互提示语设计(转)
- Vue 自定义移动端的 滑动事件
- Matlab系列之三维图形
- UE4开发五:人物模型和摄像机
- 致即将逝去的2020
- 【MVC、Spring MVC介绍、区别、执行流程】
- 黄东旭:开发者的“技术无感化”时代,从 Serverless HTAP 数据库开始 | PingCAP DevCon 2022
- C#解析ASTM1394-97协议数据
- 全球与中国三轴磁力计市场深度研究分析报告
热门文章
- csp ccf 202206-2 寻宝!大冒险!(70分超时的进)
- linux如何卸载telnet命令,linux安装telnet命令
- Xweibo与第三方站点单点登录配置
- 计算机微积分基础试题及答案,试题及答案_基础微积分Ⅱ_大学网课答案
- 计算机毕业设计Java社区团购系统(源码+系统+mysql数据库+Lw文档)
- WIN7显示桌面图标设置到左下角
- ssm产品销售管理系统计算机毕业设计
- UDS/OBD DTC(诊断故障码)格式解析
- php vld扩展,Linux安装php-vld扩展
- 矩阵理论第一章——欧氏空间与酉空间