除了模拟类的私有变量和私有方法。闭包还可用来模拟类的静态变量和方法。

除了再次利用js的闭包特性,还需要借助js语法上的一些特点。

执行上述代码后,浏览器控制台将会输出如下字符串:

Created 1 tree items!

Created 2 tree items!

之所以把上述一些js变量和函数称为“静态”,是借用了Java的提法。

这些“静态”变量和方法被保存在闭包中,在内存中是唯一的,

不会随着该函数副本的增加而增加。如果一个函数需要被实例化多次,

但其中的一些内部函数并不需要访问任何实例数据,从节省内存的角度考虑,

可采用上述构建静态函数的方法。js中的“静态”概念,有一点与Java不同:

如果上述TreeItem被设为null,即不再有引用指向它,那么它的闭包也将消失,

保存在闭包中的静态变量和方法,也将被垃圾回收器择机回收。

转载于:https://www.cnblogs.com/aaronjs/archive/2011/10/29/2228363.html

Javascript 的函数式对象(三)利用闭包模拟类的静态变量和方法相关推荐

  1. sizzle.js学习笔记利用闭包模拟实现数据结构:字典(Map)

    sizzle.js学习笔记利用闭包模拟实现数据结构:字典(Map) 这几天学习和查看了jQuery和Property这两个很流行的前端库的御用选择器组件Sizzle.js的源代码,收获还是相对多的!之 ...

  2. python post请求 上传图片_利用python模拟实现POST请求提交图片的方法

    本文主要给大家介绍的是关于利用python模拟实现POST请求提交图片的方法,分享出来供大家参考学习,下面来一看看详细的介绍: 使用requests来模拟HTTP请求本来是一件非常轻松的事情,比如上传 ...

  3. python paste_利用Python模拟登录pastebin.com的实现方法

    任务 在https://pastebin.com网站注册一个账号,利用python实现用户的自动登录和创建paste.该任务需要分成如下两步利用python实现: 1.账号的自动登录 2.paste的 ...

  4. 利用反射模拟Tomcat类加载器的toString方法

    一直认为tomcat5的类加载器的toString方法很酷,为什么呢?因为它的toString方法列出了所有的父类加载器以及类加载器加载的资源(即classpath).可能有些朋友还没有注意过,如果想 ...

  5. Python中 类和对象调用其他类中的变量和方法

    class house_item: def __init__(self,name,area): self.name=name self.area=area def __str__(self): ret ...

  6. 谈谈我对Javascript中This对象的理解

    this 指针的隐式赋值 this总是指向调用该方法的对象: 在事件中,this指向触发这个事件的对象,特殊的是,IE中的attachEvent中的this总是指向全局对象Window: 显示操纵 t ...

  7. java基础-day08-面向对象(三) this关键字、继承、static关键字

    this 关键字 1.当 成员变量 名 和 局部变量 相同时,优先使用 局部变量,通过 this 使用 成员变量. public class Test1 {public static void mai ...

  8. 成员函数 静态变量做默认参数_Scala系列 (二)Scala的独有特性提高开发效率学会之后玩转函数式与OOP!!...

    写在前面: 我是「nicedays」,一枚喜爱做特效,听音乐,分享技术的大数据开发猿.这名字是来自world order乐队的一首HAVE A NICE DAY.如今,走到现在很多坎坷和不顺,如今终于 ...

  9. javascript面向对象编程实现[定义(静态)属性方法--继承]

    javascript面向对象编程实现:             1.类的声明:                 function test1(){                     this.p ...

最新文章

  1. 单系统站内信数据库设计思路
  2. 生活随笔[2005-06-08]
  3. 企业服务与发展联盟即将正式成立
  4. poj 1195(二维树状数组)
  5. linux可以用dos命令是什么意思,Linux系统常用命令与DOS命令的类似之处和本质区别各是什么?...
  6. oracle字段公式怎么执行,Oracle 在存储过程或函数中执行字符串sql PDF 下载
  7. python另一个程序正在使用此文件_另一个程序正在使用此文件,进程无法访问
  8. Java生产环境下性能监控与调优详解 第6章 Nginx性能监控与调优
  9. SAP HANA Express Edition (HXE)-二进制安装使用步骤
  10. Tomcat 7 证书配置中遇到的一个问题
  11. thinkphp 语言包丢失
  12. 51单片机蜂鸣器演奏《小苹果》C语言程序,51单片机蜂鸣器播放小星星两只老虎欢乐颂 源程序...
  13. 省团团小程序被微信封禁
  14. Python之文本去重(基础版)
  15. dompdf中文乱码、换行解决方案
  16. 五月集训-14【栈】
  17. RFS[4]: No standby redo logfiles available for thread 1
  18. Dynamic Debug [dyndbg] 概述
  19. SkinnedMesh DX9
  20. 【houdini vex】方块穿插

热门文章

  1. 深度学习(五十三)对抗网络
  2. android复位机器人图片_Universal-Image-Loader 图片异步加载类库还不熟?
  3. 2021年上半年系统集成项目管理工程师案例分析真题及答案解析
  4. 查看本地服务器MYSQL的端口号
  5. java 海量文件存储_【直通BAT】海量数据面试总结
  6. window. onload=function(){} 与 $(function(){}) 的区别
  7. centos7手把手教你搭建zabbix监控
  8. [转帖]win10 .Net Runtime Optimization Service占用大量CPU资源解决方法
  9. C# ASP.NET MVC 之 SignalR 学习 实时数据推送显示 配合 Echarts 推送实时图表
  10. AP模块NOTE修改API