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和局部变量相关推荐

  1. [转]JavaScript/Node.JS 中的 Promises

    JavaScript Promises 初体验 Promise 是什么? Promise 对象用来进行延迟(deferred) 和 异步(asynchronous) 计算. 一个 Promise 处于 ...

  2. 【JavaScript】js中的原型继承

    文章目录 1. 理解继承 2. js中的继承(原型继承) 3. js6种继承方式 3.1 原型链继承 3.2 盗用构造函数 3.3 组合继承 3.4 原型式继承 3.5 寄生式继承 3.6 寄生式组合 ...

  3. 初学JavaScript:js中的对象(对象+原型对象)

    文章目录 js对象详解 1.创建对象 字面量模式创建对象 构造函数模式创建对象 2.访问对象 访问属性 访问方法 3.遍历对象中的属性和属性值 4.往对象中新添属性 5.删除对象中的属性 6.Obje ...

  4. [JavaScript] 探索JS中的函数秘密

    函数长啥样? 把一些要重复使用的内容封装到函数内. function foo(title) {console.log(title) } foo('title') foo('dust') foo('he ...

  5. jsfor循环终止_【JavaScript】JS中如何跳出循环/结束遍历

    直接抛结论,下表是JS中常用的实现循环遍历的方法的跳出/结束遍历的办法,经过测试后的总结.可能各位大佬还有其他的办法,我在此表示大佬NB. 序号 方法 break continue return re ...

  6. 一个讨论引发关于js中函数声明,函数表达式,形参与变量声明赋值引发的一些事(http://www.cnblogs.com/zhouyongtao/archive/2012/11/22/2783089)

    //Firefox 17下运行结果 function a(){} undefined [function a(){}, 2, 3] ee 444 6 ========================= ...

  7. Smarty 中的 if 语句条件修饰词

    Smarty 中的 if 语句和 php 中的 if 语句一样灵活易用,并增加了几个特性以适宜模板引擎. if 必须于 /if 成对出现. 可以使用 else 和 elseif 子句. 可以使用以下条 ...

  8. html eq判断相等,HTML中Smarty中的if语句条件修饰词eq相等ne、neq不相等,gt大于

    Smarty 中的 if 语句和 php 中的 if 语句一样灵活易用,并增加了几个特性以适宜模板引擎. if必须于 /if 成对出现.可以使用 else 和 elseif 子句. 可以使用以下条件修 ...

  9. 【JavaScript】js中内存泄漏的几种情况?

    文章目录 一.是什么 二.垃圾回收机制 标记清除 引用计数 小结 三.常见内存泄露情况 参考文献 一.是什么 内存泄漏(Memory leak)是在计算机科学中,由于疏忽或错误造成程序未能释放已经不再 ...

  10. 【JavaScript】JS中的预解析

    JavaScript解析器在运行JavaScript代码的时候分为两步:预解析 和 代码执行(按顺序从上到下). 预解析:js引擎会把js里面所有的var和function提升到当前作用域的最前面. ...

最新文章

  1. 楼市调控要“围堵”更要“疏通”
  2. ITK:将内核应用于图像中的每个像素
  3. mediasoup-demo 运行实战
  4. 织梦数据库支持mysql5.7_最新织梦DEDECMS5.7数据库说明文档
  5. linux配置php mysql_Linux下LAMP(Apache+PHP+MySql)环境配置
  6. 如何做一个国产数据库(四)
  7. oracle 手动添加分区,如何在oracle中创建子分区?
  8. Mybatis JPA-集成方案+代码解析
  9. red_hat_enterprise_linux
  10. linux nodejs 502错误,node.js应用程序与nginx 502错误的网关错误
  11. 搜狗浏览器显示无法解析服务器的DNS地址,搜狗浏览器显示无法解析DNS地址的解决方法...
  12. 移动交互提示语设计(转)
  13. Vue 自定义移动端的 滑动事件
  14. Matlab系列之三维图形
  15. UE4开发五:人物模型和摄像机
  16. 致即将逝去的2020
  17. 【MVC、Spring MVC介绍、区别、执行流程】
  18. 黄东旭:开发者的“技术无感化”时代,从 Serverless HTAP 数据库开始 | PingCAP DevCon 2022
  19. C#解析ASTM1394-97协议数据
  20. 全球与中国三轴磁力计市场深度研究分析报告

热门文章

  1. csp ccf 202206-2 寻宝!大冒险!(70分超时的进)
  2. linux如何卸载telnet命令,linux安装telnet命令
  3. Xweibo与第三方站点单点登录配置
  4. 计算机微积分基础试题及答案,试题及答案_基础微积分Ⅱ_大学网课答案
  5. 计算机毕业设计Java社区团购系统(源码+系统+mysql数据库+Lw文档)
  6. WIN7显示桌面图标设置到左下角
  7. ssm产品销售管理系统计算机毕业设计
  8. UDS/OBD DTC(诊断故障码)格式解析
  9. php vld扩展,Linux安装php-vld扩展
  10. 矩阵理论第一章——欧氏空间与酉空间