Javascript 的函数式对象(三)利用闭包模拟类的静态变量和方法
除了模拟类的私有变量和私有方法。闭包还可用来模拟类的静态变量和方法。
除了再次利用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 的函数式对象(三)利用闭包模拟类的静态变量和方法相关推荐
- sizzle.js学习笔记利用闭包模拟实现数据结构:字典(Map)
sizzle.js学习笔记利用闭包模拟实现数据结构:字典(Map) 这几天学习和查看了jQuery和Property这两个很流行的前端库的御用选择器组件Sizzle.js的源代码,收获还是相对多的!之 ...
- python post请求 上传图片_利用python模拟实现POST请求提交图片的方法
本文主要给大家介绍的是关于利用python模拟实现POST请求提交图片的方法,分享出来供大家参考学习,下面来一看看详细的介绍: 使用requests来模拟HTTP请求本来是一件非常轻松的事情,比如上传 ...
- python paste_利用Python模拟登录pastebin.com的实现方法
任务 在https://pastebin.com网站注册一个账号,利用python实现用户的自动登录和创建paste.该任务需要分成如下两步利用python实现: 1.账号的自动登录 2.paste的 ...
- 利用反射模拟Tomcat类加载器的toString方法
一直认为tomcat5的类加载器的toString方法很酷,为什么呢?因为它的toString方法列出了所有的父类加载器以及类加载器加载的资源(即classpath).可能有些朋友还没有注意过,如果想 ...
- Python中 类和对象调用其他类中的变量和方法
class house_item: def __init__(self,name,area): self.name=name self.area=area def __str__(self): ret ...
- 谈谈我对Javascript中This对象的理解
this 指针的隐式赋值 this总是指向调用该方法的对象: 在事件中,this指向触发这个事件的对象,特殊的是,IE中的attachEvent中的this总是指向全局对象Window: 显示操纵 t ...
- java基础-day08-面向对象(三) this关键字、继承、static关键字
this 关键字 1.当 成员变量 名 和 局部变量 相同时,优先使用 局部变量,通过 this 使用 成员变量. public class Test1 {public static void mai ...
- 成员函数 静态变量做默认参数_Scala系列 (二)Scala的独有特性提高开发效率学会之后玩转函数式与OOP!!...
写在前面: 我是「nicedays」,一枚喜爱做特效,听音乐,分享技术的大数据开发猿.这名字是来自world order乐队的一首HAVE A NICE DAY.如今,走到现在很多坎坷和不顺,如今终于 ...
- javascript面向对象编程实现[定义(静态)属性方法--继承]
javascript面向对象编程实现: 1.类的声明: function test1(){ this.p ...
最新文章
- 单系统站内信数据库设计思路
- 生活随笔[2005-06-08]
- 企业服务与发展联盟即将正式成立
- poj 1195(二维树状数组)
- linux可以用dos命令是什么意思,Linux系统常用命令与DOS命令的类似之处和本质区别各是什么?...
- oracle字段公式怎么执行,Oracle 在存储过程或函数中执行字符串sql PDF 下载
- python另一个程序正在使用此文件_另一个程序正在使用此文件,进程无法访问
- Java生产环境下性能监控与调优详解 第6章 Nginx性能监控与调优
- SAP HANA Express Edition (HXE)-二进制安装使用步骤
- Tomcat 7 证书配置中遇到的一个问题
- thinkphp 语言包丢失
- 51单片机蜂鸣器演奏《小苹果》C语言程序,51单片机蜂鸣器播放小星星两只老虎欢乐颂 源程序...
- 省团团小程序被微信封禁
- Python之文本去重(基础版)
- dompdf中文乱码、换行解决方案
- 五月集训-14【栈】
- RFS[4]: No standby redo logfiles available for thread 1
- Dynamic Debug [dyndbg] 概述
- SkinnedMesh DX9
- 【houdini vex】方块穿插
热门文章
- 深度学习(五十三)对抗网络
- android复位机器人图片_Universal-Image-Loader 图片异步加载类库还不熟?
- 2021年上半年系统集成项目管理工程师案例分析真题及答案解析
- 查看本地服务器MYSQL的端口号
- java 海量文件存储_【直通BAT】海量数据面试总结
- window. onload=function(){} 与 $(function(){}) 的区别
- centos7手把手教你搭建zabbix监控
- [转帖]win10 .Net Runtime Optimization Service占用大量CPU资源解决方法
- C# ASP.NET MVC 之 SignalR 学习 实时数据推送显示 配合 Echarts 推送实时图表
- AP模块NOTE修改API